aboutsummaryrefslogtreecommitdiff
path: root/lib/multi.c
AgeCommit message (Collapse)Author
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
2006-10-09Compiler warning fixYang Tse
2006-10-09Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to testDaniel Stenberg
case 535 and it now runs fine. Again a problem with the pipelining code not taking all possible (error) conditions into account.
2006-10-07don't display or act on state changes that doesn't actually change stateDaniel Stenberg
2006-10-06Bogdan Nicula's hanging test case was converted to test case 533 and the testDaniel Stenberg
now runs fine.
2006-10-04Dmitriy Sergeyev provided an example source code that crashed CVS libcurlDaniel Stenberg
but that worked nicely in 7.15.5. I converted it into test case 532 and fixed the problem.
2006-09-28Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurlDaniel Stenberg
would crash if a bad function sequence was used when shutting down after using the multi interface (i.e using easy_cleanup after multi_cleanup) so precautions have been added to make sure it doesn't any more - test case 529 was added to verify.
2006-09-25Compiler warning fixYang Tse
2006-09-21(FTP) a failed upload does not invalidate the control connectionDaniel Stenberg
2006-09-20Michael Wallner's test program again help me track down a problem. This timeDaniel Stenberg
it basically was that we didn't remove the current connection from the pipe list when following a redirect. Also in this commit: several cases of additional debug code for debug builds helping to check and track down some signs of run-time trouble.
2006-09-16Resize the connection cache upwards when adding more handles than whatDaniel Stenberg
currently fits in the cache, to make the cache work better especially for pipelining cases but also for "mere" (persistent) connection re-use.
2006-09-12Compiler warning fixYang Tse
2006-09-11- Fixed my breakage from earlier today so that doing curl_easy_cleanup() on aDaniel Stenberg
handle that is part of a multi handle first removes the handle from the stack. - Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL session-ID re-use on demand since there obviously are broken servers out there that misbehave with session-IDs used.
2006-09-10 Jeff Pohlmeyer presented a *multi_socket()-using program that exposed aDaniel Stenberg
problem with it (SIGSEGV-style). It clearly showed that the existing socket-state and state-difference function wasn't good enough so I rewrote it and could then re-run Jeff's program without any crash. The previous version clearly could miss to tell the application when a handle changed from using one socket to using another. While I was at it (as I could use this as a means to track this problem down), I've now added a 'magic' number to the easy handle struct that is inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that we can use internally to detect that an easy handle seems to be fine, or at least not closed or freed (freeing in debug builds fill the area with 0x13 bytes but in normal builds we can of course not assume any particular data in the freed areas).
2006-09-09Compiler warning fixYang Tse
2006-09-08Compilation fixYang Tse
2006-09-07Major overhaul introducing http pipelining support and shared connectionDaniel Stenberg
cache within the multi handle.
2006-08-31Dmitriy Sergeyev found and fixed a multi interface flaw when using asynchDaniel Stenberg
name resolves. It could get stuck in the wrong state.
2006-08-25Armel Asselin reported that the 'running_handles' counter wasn't updatedDaniel Stenberg
properly if you removed a "live" handle from a multi handle with curl_multi_remove_handle().
2006-08-04oops, the previous commit was incomplete as we made an unconditional callDaniel Stenberg
to multi_runsingle() without it being really necessary or good
2006-08-04even when we get a single connection to deal with, we must still check forDaniel Stenberg
timeout'ed connections and possibly deal with them too
2006-08-03removed running_handles argument from multi_runsingle() since it wasn't reallyDaniel Stenberg
used anymore since multi->num_alive was introduced
2006-08-03Silence compiler warning 'unused parameter running_handles' in function ↵Yang Tse
multi_runsingle(). This is done here returning multi->num_alive in the running_handles parameter even when functions that call multi_runsingle() at this moment overwrite the returned value with the one that is valid when those functions curl_multi_perform() and multi_socket() have removed expired timers from the splay. Most probably, parameter 'running_handles' in function multi_runsingle() should be just removed.