aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/http.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/http.c b/lib/http.c
index 266c1cacb..acb0f94d7 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -111,6 +111,9 @@
* Forward declarations.
*/
+static int http_getsock_do(struct connectdata *conn,
+ curl_socket_t *socks,
+ int numsocks);
static CURLcode https_connecting(struct connectdata *conn, bool *done);
#ifdef USE_SSL
static int https_getsock(struct connectdata *conn,
@@ -131,7 +134,7 @@ const struct Curl_handler Curl_handler_http = {
ZERO_NULL, /* connecting */
ZERO_NULL, /* doing */
ZERO_NULL, /* proto_getsock */
- ZERO_NULL, /* doing_getsock */
+ http_getsock_do, /* doing_getsock */
ZERO_NULL, /* disconnect */
PORT_HTTP, /* defport */
PROT_HTTP, /* protocol */
@@ -151,7 +154,7 @@ const struct Curl_handler Curl_handler_https = {
https_connecting, /* connecting */
ZERO_NULL, /* doing */
https_getsock, /* proto_getsock */
- ZERO_NULL, /* doing_getsock */
+ http_getsock_do, /* doing_getsock */
ZERO_NULL, /* disconnect */
PORT_HTTPS, /* defport */
PROT_HTTP | PROT_HTTPS | PROT_SSL /* protocol */
@@ -1726,6 +1729,19 @@ CURLcode Curl_http_connect(struct connectdata *conn, bool *done)
return CURLE_OK;
}
+/* this returns the socket to wait for in the DO and DOING state for the multi
+ interface and then we're always _sending_ a request and thus we wait for
+ the single socket to become writable only */
+static int http_getsock_do(struct connectdata *conn,
+ curl_socket_t *socks,
+ int numsocks)
+{
+ /* write mode */
+ (void)numsocks; /* unused, we trust it to be at least 1 */
+ socks[0] = conn->sock[FIRSTSOCKET];
+ return GETSOCK_WRITESOCK(0);
+}
+
static CURLcode https_connecting(struct connectdata *conn, bool *done)
{
CURLcode result;