aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hägele <haegele@teamviewer.com>2012-07-09 13:54:13 +0200
committerDaniel Stenberg <daniel@haxx.se>2012-07-09 13:55:23 +0200
commitc42ca3e73a223b8ce9d655444755098c41fe0c08 (patch)
tree527f9e704bdf6bcd4d2607b81c7be23865ca26c9
parent329be28d69e68b6021292491481b8ccd316392be (diff)
https_getsock: provided for schannel backend as well
The function https_getsock was only implemented properly when USE_SSLEAY or USE_GNUTLS is defined, but it is also necessary for USE_SCHANNEL. The problem occurs when Curl_read_plain or Curl_write_plain returns CURLE_AGAIN. In that case CURL_OK is returned to the multi-interface an the used socket is set to state CURL_POLL_REMOVE and the easy-state is set to CURLM_STATE_PROTOCONNECT. This is fine, because later the socket should be set to CURL_POLL_IN or CURL_POLL_OUT via multi_getsock. That's where https_getsock is called and doesn't return any sockets.
-rw-r--r--lib/http.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/http.c b/lib/http.c
index 4298b213a..7b0dc38d2 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -1371,9 +1371,9 @@ static CURLcode https_connecting(struct connectdata *conn, bool *done)
}
#endif
-#if defined(USE_SSLEAY) || defined(USE_GNUTLS)
-/* This function is for OpenSSL and GnuTLS only. It should be made to query
- the generic SSL layer instead. */
+#if defined(USE_SSLEAY) || defined(USE_GNUTLS) || defined(USE_SCHANNEL)
+/* This function is for OpenSSL, GnuTLS and schannel only. It should be
+ made to query the generic SSL layer instead. */
static int https_getsock(struct connectdata *conn,
curl_socket_t *socks,
int numsocks)
@@ -1409,7 +1409,7 @@ static int https_getsock(struct connectdata *conn,
return GETSOCK_BLANK;
}
#endif /* USE_SSL */
-#endif /* USE_SSLEAY || USE_GNUTLS */
+#endif /* USE_SSLEAY || USE_GNUTLS || USE_SCHANNEL */
/*
* Curl_http_done() gets called from Curl_done() after a single HTTP request