Mike Jean fixed so that the second CONNECT when doing FTP over a HTTP proxy
authorDaniel Stenberg <daniel@haxx.se>
Sat, 7 Jan 2006 22:24:16 +0000 (22:24 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 7 Jan 2006 22:24:16 +0000 (22:24 +0000)
actually used a new connection and not sent the second request on the first
socket!

CHANGES
RELEASE-NOTES
lib/http.c

diff --git a/CHANGES b/CHANGES
index c4a66c9..33e4230 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -8,6 +8,11 @@
 
 
 
+Daniel (7 January 2006)
+- Mike Jean fixed so that the second CONNECT when doing FTP over a HTTP proxy
+  actually used a new connection and not sent the second request on the first
+  socket!
+
 Daniel (6 January 2006)
 - Alexander Lazic made the buildconf run the buildconf in the ares dir if that
   is present instead of trying to mimic that script in curl's buildconf
index e0c56f8..8ea88cf 100644 (file)
@@ -15,6 +15,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o FTP over HTTP proxy now sends the second CONNECT properly
  o numerous compiler warnings and build quirks for various compilers have
    been addressed
  o supports name and passwords up to 255 bytes long, embedded in URLs
@@ -29,6 +30,6 @@ This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
  Dov Murik, Jean Jacques Drouin, Andres Garcia, Yang Tse, Gisle Vanem, Dan
- Fandrich, Alexander Lazic
+ Fandrich, Alexander Lazic, Mike Jean
  
         Thanks! (and sorry if I forgot to mention someone)
index fe06c7d..e1ab7f9 100644 (file)
@@ -845,8 +845,9 @@ send_buffer *add_buffer_init(void)
 static
 CURLcode add_buffer_send(send_buffer *in,
                          struct connectdata *conn,
-                         long *bytes_written) /* add the number of sent
+                         long *bytes_written, /* add the number of sent
                                                  bytes to this counter */
+                         int socketindex)
 {
   ssize_t amount;
   CURLcode res;
@@ -854,7 +855,11 @@ CURLcode add_buffer_send(send_buffer *in,
   size_t size;
   struct HTTP *http = conn->proto.http;
   size_t sendsize;
-  curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
+  curl_socket_t sockfd;
+
+  curlassert(socketindex <= SECONDARYSOCKET);
+
+  sockfd = conn->sock[socketindex];
 
   /* The looping below is required since we use non-blocking sockets, but due
      to the circumstances we will just loop and try again and again etc */
@@ -1166,7 +1171,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
         if(CURLE_OK == result)
           /* Now send off the request */
           result = add_buffer_send(req_buffer, conn,
-                                   &data->info.request_size);
+                                   &data->info.request_size, sockindex);
       }
       if(result)
         failf(data, "Failed sending CONNECT to proxy");
@@ -2032,7 +2037,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
           return result;
 
         result = add_buffer_send(req_buffer, conn,
-                                 &data->info.request_size);
+                                 &data->info.request_size, FIRSTSOCKET);
         if(result)
           failf(data, "Failed sending POST request");
         else
@@ -2097,7 +2102,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
       /* fire away the whole request to the server */
       result = add_buffer_send(req_buffer, conn,
-                               &data->info.request_size);
+                               &data->info.request_size, FIRSTSOCKET);
       if(result)
         failf(data, "Failed sending POST request");
       else
@@ -2141,7 +2146,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
       /* this sends the buffer and frees all the buffer resources */
       result = add_buffer_send(req_buffer, conn,
-                               &data->info.request_size);
+                               &data->info.request_size, FIRSTSOCKET);
       if(result)
         failf(data, "Failed sending PUT request");
       else
@@ -2263,7 +2268,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
       }
       /* issue the request */
       result = add_buffer_send(req_buffer, conn,
-                               &data->info.request_size);
+                               &data->info.request_size, FIRSTSOCKET);
 
       if(result)
         failf(data, "Failed sending HTTP POST request");
@@ -2280,7 +2285,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
       /* issue the request */
       result = add_buffer_send(req_buffer, conn,
-                               &data->info.request_size);
+                               &data->info.request_size, FIRSTSOCKET);
 
       if(result)
         failf(data, "Failed sending HTTP request");