aboutsummaryrefslogtreecommitdiff
path: root/lib/multi.c
AgeCommit message (Collapse)Author
2008-02-03- Dmitry Kurochkin cleaned up the pipelining code and removed the need for andDaniel Stenberg
use of the "is_in_pipeline" struct field.
2008-01-27Dmitry Kurochkin: In "real world" testing I found more bugs inDaniel Stenberg
pipelining. Broken connection is not restored and we get into infinite loop. It happens because of wrong is_in_pipeline values.
2008-01-23Dmitry Kurochkin's pipelining close-down segfault fixDaniel Stenberg
2008-01-21Dmitry Kurochkin removed the cancelled state for pipelining, as we agreedDaniel Stenberg
that it is bad anyway. Starting now, removing a handle that is in used in a pipeline will break the pipeline - it'll be set back up again but still...
2008-01-18Lau Hang Kin found and fixed a problem with the multi interface when doingDaniel Stenberg
CONNECT over a proxy. curl_multi_fdset() didn't report back the socket properly during that state, due to a missing case in the switch in the multi_getsock() function.
2008-01-16Dmitry Kurochkin's additional pipelining bugfixDaniel Stenberg
2008-01-16Dmitry Kurochkin worked a lot on improving the HTTP Pipelining support thatDaniel Stenberg
previously had a number of flaws, perhaps most notably when an application fired up N transfers at once as then they wouldn't pipeline at all that nicely as anyone would think... Test case 530 was also updated to take the improved functionality into account.
2008-01-08Introducing curl_easy_pause() and new magic return codes for both the readDaniel Stenberg
and the write callbacks that now can make a connection's reading and/or writing get paused.
2007-11-24struct HandleData is now called struct SingleRequest, and is only for data thatDaniel Stenberg
is inited at the start of the DO action. I removed the Curl_transfer_keeper struct completely, and I had to move out a few struct members (that had to be set before DO or used after DONE) to the UrlState struct. The SingleRequest struct is accessed with SessionHandle->req. One of the biggest reasons for doing this was the bunch of duplicate struct members in HandleData and Curl_transfer_keeper since it was really messy to keep track of two variables with the same name and basically the same purpose!
2007-11-15Rearranged code and changed Curl_readwrite_init() and Curl_pre_readwrite() intoDaniel Stenberg
do_init() and do_complete() which now are called first and last in the DO function. It simplified the flow in multi.c and the functions got more sensible names!
2007-11-05removed space after if and while before the parenthesis for better source codeDaniel Stenberg
consistency
2007-11-03make sure the code deals with failures on the DO_MORE state properlyDaniel Stenberg
2007-09-27Enabled a few more gcc warnings with --enable-debug. Renamed a fewDan Fandrich
variables to avoid shadowing global declarations.
2007-08-31Fixed an invalid returned error code added in my last submission.Dan Fandrich
2007-08-30Fixed a few compiler warnings. Try to do a slightly better job ofDan Fandrich
cleaning up after an OOM condition in curl_multi_add_handle
2007-08-26Fixed some minor mismatched types found by splint.Dan Fandrich
2007-06-26Robert Iakobashvili re-arranged the internal hash code to work with a customDaniel Stenberg
hash function for different hashes, and also expanded the default size for the socket hash table used in multi handles to greatly enhance speed when very many connections are added and the socket API is used.
2007-06-14Shmulik Regev fixed a flaw in the multi interface that occurred when doingDaniel Stenberg
HTTP CONNECT over a proxy
2007-06-01ouch, two conditionals were turned backwards!Daniel Stenberg
2007-06-01do the update timer stuff even when CURLM_CALL_MULTI_PERFORM is returnedDaniel Stenberg
2007-05-30Added CURLMOPT_MAXCONNECTS which is a curl_multi_setopt() option for settingDaniel Stenberg
the maximum size of the connection cache maximum size of the multi handle.
2007-05-07James Bursa fixed a bug in the multi handle code that made the connectionDaniel Stenberg
cache grow a bit too much, beyond the normal 4 * easy_handles.
2007-05-02Fixed an out of memory handling issue with HTTP pipelines.Dan Fandrich
2007-05-02- Set the timeout for easy handles to expire really soon after addition orDaniel Stenberg
when CURLM_CALL_MULTI_PERFORM is returned from curl_multi_socket*/perform, to make applications using only curl_multi_socket() to properly function when adding easy handles "on the fly". Bug report and test app provided by Michael Wallner.
2007-04-16- Robert Iakobashvil added curl_multi_socket_action() to libcurl, which is aDaniel Stenberg
function that deprecates the curl_multi_socket() function. Using the new function the application tell libcurl what action that was found in the socket that it passes in. This gives a significant performance boost as it allows libcurl to avoid a call to poll()/select() for every call to curl_multi_socket*().
2007-04-13fix compiler warningYang Tse
2007-04-10Ravi Pratap provided fixes for HTTP pipeliningDaniel Stenberg
2007-04-07fix out of memory handling issueYang Tse
2007-04-01Robert Iakobashvili made curl_multi_remove_handle() a lot faster when manyDaniel Stenberg
easy handles are added to a multi handle, by avoiding the looping over all the handles to find which one to remove.
2007-03-31Check for a NULL easy->easy_conn in multi_getsock() since it can in factDaniel Stenberg
happen when curl_multi_remove_handle() is called. CID 13. coverity.com scan
2007-03-25- Daniel Johnson fixed multi code to traverse the easy handle list properly.Daniel Stenberg
A left-over bug from the February 21 fix.
2007-03-23add missing state name for the debug state switch outputDaniel Stenberg
2007-03-01Do not remove CURLM_STATE_WAITPROXYCONNECT from the CURLMstate enumYang Tse
in builds with HTTP support disabled to keep consistent enum values for CURLMstate in all kind of builds.
2007-02-27no proxy support if libcurl is built with HTTP disabledYang Tse
2007-02-26Removed inclusion of <sys/types.h> and <sys/stat.h> in .c-filesGisle Vanem
since they're already included through "setup.h".
2007-02-25- Adam D. Moss made the HTTP CONNECT procedure less blocking when used fromDaniel Stenberg
the multi interface. Note that it still does a part of the connection in a blocking manner.
2007-02-21- Ravi Pratap provided work on libcurl making pipelining more robust andDaniel Stenberg
fixing some bugs: o Don't mix GET and POST requests in a pipeline o Fix the order in which requests are dispatched from the pipeline o Fixed several curl bugs with pipelining when the server is returning chunked encoding: * Added states to chunked parsing for final CRLF * Rewind buffer after parsing chunk with data remaining * Moved chunked header initializing to a spot just before receiving headers
2007-02-18- Jeff Pohlmeyer identified two problems: first a rather obscure problem withDaniel Stenberg
the multi interface and connection re-use that could make a curl_multi_remove_handle() ruin a pointer in another handle. The second problem was less of an actual problem but more of minor quirk: the re-using of connections wasn't properly checking if the connection was marked for closure.
2007-02-12- Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handleDaniel Stenberg
that has an easy handle present in the "closure" list pending closure.
2007-01-27Compiler warning fixYang Tse
2007-01-16- Armel Asselin improved libcurl to behave a lot better when an easy handleDaniel Stenberg
doing an FTP transfer is removed from a multi handle before completion. The fix also fixed the "alive counter" to be correct on "premature removal" for all protocols.
2006-12-05Jared Lundell filed bug report #1604956Daniel Stenberg
(http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl will always internally use no less than 1 entry in the connection cache.
2006-10-23Ravi Pratap provided a major update with pipelining fixes. We also no longerDaniel Stenberg
re-use connections (for pipelining) before the name resolving is done.
2006-10-18the expire timer is a bit too annoying to see all the time ;-)Daniel Stenberg
2006-10-13print the actual (externally known) easy handle and not the internal containerDaniel Stenberg
for it
2006-10-13Added curl_multi_dump() when built with CURLDEBUG - this is not a stable publicDaniel Stenberg
function, this is only meant to allow easier tracking of the internal handle's state and what sockets they use. Only for research and development.
2006-10-12Starting now, adding an easy handle to a multi stack that was already addedDaniel Stenberg
to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
2006-10-12Jeff Pohlmeyer has been working with the hiperfifo.c example source code,Daniel Stenberg
and while doing so it became apparent that the current timeout system for the socket API really was a bit awkward since it become quite some work to be sure we have the correct timeout set. Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another callback the app can set to get to know when the general timeout time changes and thus for an application like hiperfifo.c it makes everything a lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in good old libcurl tradition.
2006-10-10mark the handle as no longer having a broken pipe when a transfer has failedDaniel Stenberg
2006-10-09when going to completed due to error, mark the handle as not in a pipelineDaniel Stenberg
anymore