http-proxy: deal with EAGAIN
authorDaniel Stenberg <daniel@haxx.se>
Fri, 16 Jun 2017 15:20:43 +0000 (17:20 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 16 Jun 2017 15:22:32 +0000 (17:22 +0200)
... the previous code would reset the header length wrongly (since
5113ad0424). This makes test 1060 reliable again.

Also: make sws send even smaller chunks of data to increase the
likeliness of this happening.

lib/http_proxy.c
tests/server/sws.c

index 380eded2e920455aedbd8433b2ed4df51d0555de..bb788bd2e59bb865872d79f6db73ad7a49ba7c96 100644 (file)
@@ -311,6 +311,7 @@ static CURLcode CONNECT(struct connectdata *conn,
         return result;
 
       s->tunnel_state = TUNNEL_CONNECT;
+      s->perline = 0;
     } /* END CONNECT PHASE */
 
     check = Curl_timeleft(data, NULL, TRUE);
@@ -328,8 +329,6 @@ static CURLcode CONNECT(struct connectdata *conn,
     { /* READING RESPONSE PHASE */
       int error = SELECT_OK;
 
-      s->perline = 0;
-
       while(s->keepon && !error) {
         ssize_t gotbytes;
 
index 163fe8b2b31e9604e65f3bce88e4ac25dec6c74a..b1199ccc6057545604c2bbe472e30ea5f7455102 100644 (file)
@@ -1194,12 +1194,12 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
 
   responsesize = count;
   do {
-    /* Ok, we send no more than 200 bytes at a time, just to make sure that
+    /* Ok, we send no more than N bytes at a time, just to make sure that
        larger chunks are split up so that the client will need to do multiple
        recv() calls to get it and thus we exercise that code better */
     size_t num = count;
-    if(num > 200)
-      num = 200;
+    if(num > 20)
+      num = 20;
 
     retry:
     written = swrite(sock, buffer, num);
@@ -1211,9 +1211,6 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
       sendfailure = TRUE;
       break;
     }
-    else {
-      logmsg("Sent off %zd bytes", written);
-    }
 
     /* write to file as well */
     fwrite(buffer, 1, (size_t)written, dump);