Loading CHANGES +11 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,17 @@ Changelog Daniel Stenberg (8 Sep 2008) - Dmitry Kurochkin patched a problem: I have found bug in pipelining through proxy. I have a transparent proxy. When running with http_proxy environment variable not set my test completes fine (it goes through transparent proxy). When I set http_proxy variable my test hangs after the first downloaded is complete. Looks like the second handle never gets out from WAITDO state. The fix: It makes checkPendPipeline move 1 handler from pend pipe to send pipe if pipelining is not supported by server but there are no handles in send and recv pipes. - Stefan Krause pointed out that libcurl would wrongly send away cookies to sites in cases where the cookie clearly has a very old expiry date. The condition was simply that libcurl's date parser would fail to convert the Loading RELEASE-NOTES +2 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ This release includes the following bugfixes: o NetWare LIBC builds are now largefile feature enabled by default o curl_easy_pause() could behave wrongly on unpause o cookie with invalid expire dates are now considered expired o HTTP pipelining over proxy This release includes the following known bugs: Loading @@ -33,6 +34,6 @@ This release would not have looked like this without help, code, reports and advice from friends like these: Keith Mok, Yang Tse, Daniel Fandrich, Guenter Knauf, Dmitriy Sergeyev, Linus Nielsen Feltzing, Martin Drasar, Stefan Krause Linus Nielsen Feltzing, Martin Drasar, Stefan Krause, Dmitry Kurochkin Thanks! (and sorry if I forgot to mention someone) lib/multi.c +7 −6 Original line number Diff line number Diff line Loading @@ -1988,11 +1988,13 @@ static int checkPendPipeline(struct connectdata *conn) int result = 0; struct curl_llist_element *sendhead = conn->send_pipe->head; if (conn->server_supports_pipelining) { size_t pipeLen = conn->send_pipe->size + conn->recv_pipe->size; if (conn->server_supports_pipelining || pipeLen == 0) { struct curl_llist_element *curr = conn->pend_pipe->head; const size_t maxPipeLen = conn->server_supports_pipelining ? MAX_PIPELINE_LENGTH : 1; while(pipeLen < MAX_PIPELINE_LENGTH && curr) { while(pipeLen < maxPipeLen && curr) { Curl_llist_move(conn->pend_pipe, curr, conn->send_pipe, conn->send_pipe->tail); Curl_pgrsTime(curr->ptr, TIMER_PRETRANSFER); Loading @@ -2000,11 +2002,10 @@ static int checkPendPipeline(struct connectdata *conn) curr = conn->pend_pipe->head; ++pipeLen; } if (result > 0) conn->now = Curl_tvnow(); } if (result) { conn->now = Curl_tvnow(); /* something moved, check for a new send pipeline leader */ if(sendhead != conn->send_pipe->head) { /* this is a new one as head, expire it */ Loading Loading
CHANGES +11 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,17 @@ Changelog Daniel Stenberg (8 Sep 2008) - Dmitry Kurochkin patched a problem: I have found bug in pipelining through proxy. I have a transparent proxy. When running with http_proxy environment variable not set my test completes fine (it goes through transparent proxy). When I set http_proxy variable my test hangs after the first downloaded is complete. Looks like the second handle never gets out from WAITDO state. The fix: It makes checkPendPipeline move 1 handler from pend pipe to send pipe if pipelining is not supported by server but there are no handles in send and recv pipes. - Stefan Krause pointed out that libcurl would wrongly send away cookies to sites in cases where the cookie clearly has a very old expiry date. The condition was simply that libcurl's date parser would fail to convert the Loading
RELEASE-NOTES +2 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ This release includes the following bugfixes: o NetWare LIBC builds are now largefile feature enabled by default o curl_easy_pause() could behave wrongly on unpause o cookie with invalid expire dates are now considered expired o HTTP pipelining over proxy This release includes the following known bugs: Loading @@ -33,6 +34,6 @@ This release would not have looked like this without help, code, reports and advice from friends like these: Keith Mok, Yang Tse, Daniel Fandrich, Guenter Knauf, Dmitriy Sergeyev, Linus Nielsen Feltzing, Martin Drasar, Stefan Krause Linus Nielsen Feltzing, Martin Drasar, Stefan Krause, Dmitry Kurochkin Thanks! (and sorry if I forgot to mention someone)
lib/multi.c +7 −6 Original line number Diff line number Diff line Loading @@ -1988,11 +1988,13 @@ static int checkPendPipeline(struct connectdata *conn) int result = 0; struct curl_llist_element *sendhead = conn->send_pipe->head; if (conn->server_supports_pipelining) { size_t pipeLen = conn->send_pipe->size + conn->recv_pipe->size; if (conn->server_supports_pipelining || pipeLen == 0) { struct curl_llist_element *curr = conn->pend_pipe->head; const size_t maxPipeLen = conn->server_supports_pipelining ? MAX_PIPELINE_LENGTH : 1; while(pipeLen < MAX_PIPELINE_LENGTH && curr) { while(pipeLen < maxPipeLen && curr) { Curl_llist_move(conn->pend_pipe, curr, conn->send_pipe, conn->send_pipe->tail); Curl_pgrsTime(curr->ptr, TIMER_PRETRANSFER); Loading @@ -2000,11 +2002,10 @@ static int checkPendPipeline(struct connectdata *conn) curr = conn->pend_pipe->head; ++pipeLen; } if (result > 0) conn->now = Curl_tvnow(); } if (result) { conn->now = Curl_tvnow(); /* something moved, check for a new send pipeline leader */ if(sendhead != conn->send_pipe->head) { /* this is a new one as head, expire it */ Loading