]> granicus.if.org Git - curl/commitdiff
multi: provide a socket to wait for in Curl_protocol_getsock
authorDaniel Stenberg <daniel@haxx.se>
Wed, 23 May 2018 22:21:37 +0000 (00:21 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 24 May 2018 18:49:32 +0000 (20:49 +0200)
... even when there's no protocol specific handler setup.

Bug: https://curl.haxx.se/mail/lib-2018-05/0062.html
Reported-by: Sean Miller
Closes #2600

lib/url.c

index 701f83ab3bff4c59951eaed3a728fd3e1b2adaec..411a0c814347111e4b91c72ab4e1d03945ec9b60 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -1554,7 +1554,11 @@ int Curl_protocol_getsock(struct connectdata *conn,
 {
   if(conn->handler->proto_getsock)
     return conn->handler->proto_getsock(conn, socks, numsocks);
-  return GETSOCK_BLANK;
+  /* Backup getsock logic. Since there is a live socket in use, we must wait
+     for it or it will be removed from watching when the multi_socket API is
+     used. */
+  socks[0] = conn->sock[FIRSTSOCKET];
+  return GETSOCK_READSOCK(0) | GETSOCK_WRITESOCK(0);
 }
 
 int Curl_doing_getsock(struct connectdata *conn,