#
b0972bc8 |
| 26-Feb-2019 |
Jay Satiro |
multi: support verbose conncache closure handle - Change closure handle to receive verbose setting from the easy handle most recently added via curl_multi_add_handle. The clos
multi: support verbose conncache closure handle - Change closure handle to receive verbose setting from the easy handle most recently added via curl_multi_add_handle. The closure handle is a special easy handle used for closing cached connections. It receives limited settings from the easy handle most recently added to the multi handle. Prior to this change that did not include verbose which was a problem because on connection shutdown verbose mode was not acknowledged. Ref: https://github.com/curl/curl/pull/3598 Co-authored-by: Daniel Stenberg Closes https://github.com/curl/curl/pull/3618
show more ...
|
#
4ff05553 |
| 28-Feb-2019 |
Daniel Stenberg |
Curl_easy: remove req.maxfd - never used! Introduced in 8b6314ccfb, but not used anymore in current code. Unclear since when. Closes #3626
|
#
aa7b813a |
| 24-Feb-2019 |
Daniel Stenberg |
multi: call multi_done on connect timeouts Failing to do so would make the CURLINFO_TOTAL_TIME timeout to not get updated correctly and could end up getting reported to the application
multi: call multi_done on connect timeouts Failing to do so would make the CURLINFO_TOTAL_TIME timeout to not get updated correctly and could end up getting reported to the application completely wrong (way too small). Reported-by: accountantM on github Fixes #3602 Closes #3605
show more ...
|
#
afc00e04 |
| 19-Feb-2019 |
Daniel Stenberg |
singlesocket: fix the 'sincebefore' placement The variable wasn't properly reset within the loop and thus could remain set for sockets that hadn't been set before and miss notifying the
singlesocket: fix the 'sincebefore' placement The variable wasn't properly reset within the loop and thus could remain set for sockets that hadn't been set before and miss notifying the app. This is a follow-up to 4c35574 (shipped in curl 7.64.0) Reported-by: buzo-ffm on github Detected-by: Jan Alexander Steffens Fixes #3585 Closes #3589
show more ...
|
#
bb2444b7 |
| 12-Feb-2019 |
Daniel Stenberg |
multi: Dereference of null pointer Mostly a false positive, but this makes the code easier to read anyway. Detected by scan-build. Closes #3563
|
#
61496154 |
| 11-Feb-2019 |
Daniel Stenberg |
http2: multi_connchanged() moved from multi.c, only used for h2 Closes #3557
|
#
aabc7ae5 |
| 11-Feb-2019 |
Daniel Stenberg |
multi: remove verbose "Expire in" ... messages Reported-by: James Brown Bug: https://curl.haxx.se/mail/archive-2019-02/0013.html Closes #3558
|
#
982c09b9 |
| 07-Feb-2019 |
Daniel Stenberg |
multi: (void)-prefix when ignoring return values ... and added braces to two function calls which fixes warnings if they are replace by empty macros at build-time.
|
#
05b100ae |
| 08-Feb-2019 |
Daniel Stenberg |
cleanup: make local functions static urlapi: turn three local-only functions into statics conncache: make conncache_find_first_connection static multi: make detach_connnect
cleanup: make local functions static urlapi: turn three local-only functions into statics conncache: make conncache_find_first_connection static multi: make detach_connnection static connect: make getaddressinfo static curl_ntlm_core: make hmac_md5 static http2: make two functions static http: make http_setup_conn static connect: make tcpnodelay static tests: make UNITTEST a thing to mark functions with, so they can be static for normal builds and non-static for unit test builds ... and mark Curl_shuffle_addr accordingly. url: make up_free static setopt: make vsetopt static curl_endian: make write32_le static rtsp: make rtsp_connisdead static warnless: remove unused functions memdebug: remove one unused function, made another static
show more ...
|
#
6f61933a |
| 27-Jan-2019 |
Daniel Stenberg |
multi: set the EXPIRE_*TIMEOUT timers at TIMER_STARTSINGLE time To make sure Curl_timeleft() also thinks the timeout has been reached when one of the EXPIRE_*TIMEOUTs expires. B
multi: set the EXPIRE_*TIMEOUT timers at TIMER_STARTSINGLE time To make sure Curl_timeleft() also thinks the timeout has been reached when one of the EXPIRE_*TIMEOUTs expires. Bug: https://curl.haxx.se/mail/lib-2019-01/0073.html Reported-by: Zhao Yisha Closes #3501
show more ...
|
#
fe71b2d9 |
| 14-Jan-2019 |
Daniel Stenberg |
multi: remove "Dead assignment" Found by scan-build. Follow-up to 4c35574bb785ce. Closes #3471
|
#
ba243235 |
| 02-Jan-2019 |
Daniel Stenberg |
urldata: rename easy_conn to just conn We use "conn" everywhere to be a pointer to the connection. Introduces two functions that "attaches" and "detaches" the connection to and
urldata: rename easy_conn to just conn We use "conn" everywhere to be a pointer to the connection. Introduces two functions that "attaches" and "detaches" the connection to and from the transfer. Going forward, we should favour using "data->conn" (since a transfer always only has a single connection or none at all) to "conn->data" (since a connection can have none, one or many transfers associated with it and updating conn->data to be correct is error prone and a frequent reason for internal issues). Closes #3442
show more ...
|
#
4c35574b |
| 08-Jan-2019 |
Daniel Stenberg |
multi: multiplexing improvements Fixes #3436 Closes #3448 Problem 1 After LOTS of scratching my head, I eventually realized that even when doing 10 uploads in para
multi: multiplexing improvements Fixes #3436 Closes #3448 Problem 1 After LOTS of scratching my head, I eventually realized that even when doing 10 uploads in parallel, sometimes the socket callback to the application that tells it what to wait for on the socket, looked like it would reflect the status of just the single transfer that just changed state. Digging into the code revealed that this was indeed the truth. When multiple transfers are using the same connection, the application did not correctly get the *combined* flags for all transfers which then could make it switch to READ (only) when in fact most transfers wanted to get told when the socket was WRITEABLE. Problem 1b A separate but related regression had also been introduced by me when I cleared connection/transfer association better a while ago, as now the logic couldn't find the connection and see if that was marked as used by more transfers and then it would also prematurely remove the socket from the socket hash table even in times other transfers were still using it! Fix 1 Make sure that each socket stored in the socket hash has a "combined" action field of what to ask the application to wait for, that is potentially the ORed action of multiple parallel transfers. And remove that socket hash entry only if there are no transfers left using it. Problem 2 The socket hash entry stored an association to a single transfer using that socket - and when curl_multi_socket_action() was called to tell libcurl about activities on that specific socket only that transfer was "handled". This was WRONG, as a single socket/connection can be used by numerous parallel transfers and not necessarily a single one. Fix 2 We now store a list of handles in the socket hashtable entry and when libcurl is told there's traffic for a particular socket, it now iterates over all known transfers using that single socket.
show more ...
|
#
84a30d0a |
| 14-Dec-2018 |
Brad Spencer |
curl_multi_remove_handle() don't block terminating c-ares requests Added Curl_resolver_kill() for all three resolver modes, which only blocks when necessary, along with test 1592 to conf
curl_multi_remove_handle() don't block terminating c-ares requests Added Curl_resolver_kill() for all three resolver modes, which only blocks when necessary, along with test 1592 to confirm curl_multi_remove_handle() doesn't block unless it must. Closes #3428 Fixes #3371
show more ...
|
#
1e4ec09a |
| 01-Jan-2019 |
Rikard Falkeborn |
printf: introduce CURL_FORMAT_TIMEDIFF_T
|
#
fb445a1e |
| 20-Dec-2018 |
Daniel Stenberg |
disconnect: separate connections and easy handles better Do not assume/store assocation between a given easy handle and the connection if it can be avoided. Long-term, the 'conn
disconnect: separate connections and easy handles better Do not assume/store assocation between a given easy handle and the connection if it can be avoided. Long-term, the 'conn->data' pointer should probably be removed as it is a little too error-prone. Still used very widely though. Reported-by: masbug on github Fixes #3391 Closes #3400
show more ...
|
#
ecb2e194 |
| 11-Dec-2018 |
Daniel Stenberg |
multi: convert two timeout variables to timediff_t The time_t type is unsigned on some systems and these variables are used to hold return values from functions that return timediff_t
multi: convert two timeout variables to timediff_t The time_t type is unsigned on some systems and these variables are used to hold return values from functions that return timediff_t already. timediff_t is always a signed type. Closes #3363
show more ...
|
#
d997aa0e |
| 07-Dec-2018 |
Johannes Schindelin |
Upon HTTP_1_1_REQUIRED, retry the request with HTTP/1.1 This is a companion patch to cbea2fd2c (NTLM: force the connection to HTTP/1.1, 2018-12-06): with NTLM, we can switch to HTTP/1.1
Upon HTTP_1_1_REQUIRED, retry the request with HTTP/1.1 This is a companion patch to cbea2fd2c (NTLM: force the connection to HTTP/1.1, 2018-12-06): with NTLM, we can switch to HTTP/1.1 preemptively. However, with other (Negotiate) authentication it is not clear to this developer whether there is a way to make it work with HTTP/2, so let's try HTTP/2 first and fall back in case we encounter the error HTTP_1_1_REQUIRED. Note: we will still keep the NTLM workaround, as it avoids an extra round trip. Daniel Stenberg helped a lot with this patch, in particular by suggesting to introduce the Curl_h2_http_1_1_error() function. Closes #3349 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
show more ...
|
#
34fe0e16 |
| 24-Nov-2018 |
Daniel Stenberg |
curl_easy_perform: fix timeout handling curl_multi_wait() was erroneously used from within curl_easy_perform(). It could lead to it believing there was no socket to wait for and then
curl_easy_perform: fix timeout handling curl_multi_wait() was erroneously used from within curl_easy_perform(). It could lead to it believing there was no socket to wait for and then instead sleep for a while instead of monitoring the socket and then miss acting on that activity as swiftly as it should (causing an up to 1000 ms delay). Reported-by: Antoni Villalonga Fixes #3305 Closes #3306 Closes #3308
show more ...
|
#
dcd6f810 |
| 22-Nov-2018 |
Daniel Stenberg |
snprintf: renamed and we now only use msnprintf() The function does not return the same value as snprintf() normally does, so readers may be mislead into thinking the code works differen
snprintf: renamed and we now only use msnprintf() The function does not return the same value as snprintf() normally does, so readers may be mislead into thinking the code works differently than it actually does. A different function name makes this easier to detect. Reported-by: Tomas Hoger Assisted-by: Daniel Gustafsson Fixes #3296 Closes #3297
show more ...
|
#
6765e6d9 |
| 05-Nov-2018 |
Romain Fliedel |
ares: remove fd from multi fd set when ares is about to close the fd When using c-ares for asyn dns, the dns socket fd was silently closed by c-ares without curl being aware. curl would
ares: remove fd from multi fd set when ares is about to close the fd When using c-ares for asyn dns, the dns socket fd was silently closed by c-ares without curl being aware. curl would then 'realize' the fd has been removed at next call of Curl_resolver_getsock, and only then notify the CURLMOPT_SOCKETFUNCTION to remove fd from its poll set with CURL_POLL_REMOVE. At this point the fd is already closed. By using ares socket state callback (ARES_OPT_SOCK_STATE_CB), this patch allows curl to be notified that the fd is not longer needed for neither for write nor read. At this point by calling Curl_multi_closed we are able to notify multi with CURL_POLL_REMOVE before the fd is actually closed by ares. In asyn-ares.c Curl_resolver_duphandle we can't use ares_dup anymore since it does not allow passing a different sock_state_cb_data Closes #3238
show more ...
|
#
3793761a |
| 25-Oct-2018 |
Michael Kaufmann |
multi: Fix error handling in the SENDPROTOCONNECT state If Curl_protocol_connect() returns an error code, handle the error instead of switching to the next state. Closes #3170
|
#
05564e75 |
| 02-Oct-2018 |
Daniel Stenberg |
multi: avoid double-free Curl_follow() no longer frees the string. Make sure it happens in the caller function, like we normally handle allocations. This bug was introduced with
multi: avoid double-free Curl_follow() no longer frees the string. Make sure it happens in the caller function, like we normally handle allocations. This bug was introduced with the use of the URL API internally, it has never been in a release version Reported-by: Dario Weißer Closes #3149
show more ...
|
#
8a49f91d |
| 18-Oct-2018 |
Daniel Stenberg |
multi: make the closure handle "inherit" CURLOPT_NOSIGNAL Otherwise, closing that handle can still cause surprises! Reported-by: Martin Ankerl Fixes #3138 Closes #3147
|
#
6afe70a0 |
| 10-Oct-2018 |
Michael Kaufmann |
Curl_follow: Always free the passed new URL Closes #3124
|