]> granicus.if.org Git - curl/commitdiff
CONNECT: close proxy connections that fail to CONNECT
authorDaniel Stenberg <daniel@haxx.se>
Mon, 25 Aug 2014 11:33:34 +0000 (13:33 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 25 Aug 2014 11:33:34 +0000 (13:33 +0200)
This is usually due to failed auth. There's no point in us keeping such
a connection alive since it shouldn't be re-used anyway.

Bug: http://curl.haxx.se/bug/view.cgi?id=1381
Reported-by: Marcel Raad
lib/http_proxy.c

index 17f1c00a1d704267828f7fbbf876d09a8fc15fe7..5343eb718a0d901daa336d48a6f7b7e33d1e77d8 100644 (file)
@@ -554,10 +554,16 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
       conn->bits.proxy_connect_closed = TRUE;
       infof(data, "Connect me again please\n");
     }
-    else if(data->req.newurl) {
-      /* this won't be used anymore for the CONNECT so free it now */
-      free(data->req.newurl);
-      data->req.newurl = NULL;
+    else {
+      if(data->req.newurl) {
+        /* this won't be used anymore for the CONNECT so free it now */
+        free(data->req.newurl);
+        data->req.newurl = NULL;
+      }
+      /* failure, close this connection to avoid re-use */
+      connclose(conn, "proxy CONNECT failure");
+      Curl_closesocket(conn, conn->sock[sockindex]);
+      conn->sock[sockindex] = CURL_SOCKET_BAD;
     }
 
     /* to back to init state */