From f4cc8153aeb5209ddb9698b2b0780ab2bfdb3d44 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 7 Jan 2006 22:24:16 +0000 Subject: 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! --- lib/http.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'lib/http.c') diff --git a/lib/http.c b/lib/http.c index fe06c7dc7..e1ab7f9b4 100644 --- a/lib/http.c +++ b/lib/http.c @@ -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"); -- cgit v1.2.3