http: don't enable chunked during authentication negotiations
authorDaniel Stenberg <daniel@haxx.se>
Tue, 6 Jul 2010 20:50:21 +0000 (22:50 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 6 Jul 2010 20:50:21 +0000 (22:50 +0200)
As mentioned in bug report #2956968, the HTTP code wouldn't send the
first empty chunk during the auth negotiation phase of the HTTP request
sending, so the server would wait for data to come and libcurl would
wait for data to arrive... I've made the code not enable chunked
encoding until the auth negotiation is done and thus this scenario
doesn't occur anymore.

Reported by: Sidney San Martín
Bug: http://curl.haxx.se/bug/view.cgi?id=2956968

lib/http.c

index d510e6a9e5b9fa0bc0a045f05d3b04ad0837ab8c..93a5e3e33aeaa9eabbf29d4d9edd878eb5abba01 100644 (file)
@@ -2222,7 +2222,10 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     if((conn->protocol&PROT_HTTP) &&
         data->set.upload &&
         (data->set.infilesize == -1)) {
-      if (use_http_1_1(data, conn)) {
+      if(conn->bits.authneg)
+        /* don't enable chunked during auth neg */
+        ;
+      else if(use_http_1_1(data, conn)) {
         /* HTTP, upload, unknown file size and not HTTP 1.0 */
         data->req.upload_chunky = TRUE;
       }