#
522c89a1 |
| 26-Oct-2024 |
Daniel Stenberg |
lib: remove Curl_ prefix from static functions 'Curl_' is a prefix used for library global functions (cross-files). Static functions should thus not use it. Closes #15419
|
#
9cc24640 |
| 17-Oct-2024 |
Daniel Stenberg |
source: avoid use of 'very' in comments
|
#
9bee39bf |
| 12-Oct-2024 |
Daniel Stenberg |
url: use same credentials on redirect Previously it could lose the username and only use the password. Added test 998 and 999 to verify. Reported-by: Tobias Bora Fixes
url: use same credentials on redirect Previously it could lose the username and only use the password. Added test 998 and 999 to verify. Reported-by: Tobias Bora Fixes #15262 Closes #15282
show more ...
|
#
d0377f5a |
| 11-Oct-2024 |
Daniel Stenberg |
multi: convert Curl_follow to static multi_follow Moved over from transfer.c because it is only used in multi.c Closes #15260
|
#
cfae354a |
| 26-Sep-2024 |
Viktor Szakats |
codespell: extend checks to more subdirs - fix issues found. - fix a few more found locally. Closes #15072
|
#
b2331f3e |
| 10-Sep-2024 |
Stefan Eissing |
request: on shutdown send, proceed normally on timeout When ending an FTP upload, we shut down the connection gracefully, since the server should be notified we had send all bytes. Mostl
request: on shutdown send, proceed normally on timeout When ending an FTP upload, we shut down the connection gracefully, since the server should be notified we had send all bytes. Mostly, this is a NOP without TLS involved. With TLS, close-notify messages should be exchanged. As reported in #14843, not all servers seem to do that. Since it is the server's responsiblity to check it has received everything, we just log the timeout and proceed as if everything is fine. In the receive direction, we still fail the transfer if the server does not shut down its direction properly. Fixes #14843 Reported-by: Rasmus Melchior Jacobsen Closes #14848
show more ...
|
#
fbf5d507 |
| 18-Sep-2024 |
Daniel Stenberg |
lib/src: white space edits to comply better with code style ... as checksrc now finds and complains about these. Closes #14921
|
#
2b652b86 |
| 14-Sep-2024 |
Daniel Stenberg |
transfer: remove redundant variable use: select_bits Follow-up to a33bcc9b53b9d6ea9f879624e8 Pointed out by CodeSonar Closes #14907
|
#
a33bcc9b |
| 13-Sep-2024 |
Stefan Eissing |
transfer: fix sendrecv() without interim poll There was a "clever" optimization that skipped sendrecv() handling when the transfer's pollset was empty. This happens for paused transfers,
transfer: fix sendrecv() without interim poll There was a "clever" optimization that skipped sendrecv() handling when the transfer's pollset was empty. This happens for paused transfers, for example. Unforunately, if the libcurl application never calls curl_multi_poll(), the pollset is and will aways remain empty, prevent the transfer from progressing. Remove this "optimization" and always try send/receive where applicable. Fixes #14898 Reported-by: Victor Kislov Closes #14901
show more ...
|
#
70d3a9b6 |
| 12-Sep-2024 |
Stefan Eissing |
http2: when uploading data from stdin, fix eos forwarding When uploading data from stdin ('-T -'), and the EOS was only detected on a 0-length read, the EOS was not forwarded to the filt
http2: when uploading data from stdin, fix eos forwarding When uploading data from stdin ('-T -'), and the EOS was only detected on a 0-length read, the EOS was not forwarded to the filters. This led HTTP/2 to hang on not forwarding this to the server. Added test_07_14 to reproduce and verify. Fixes #14870 Reported-by: nekopsykose on github Closes #14877
show more ...
|
#
4ff04615 |
| 02-Sep-2024 |
Daniel Stenberg |
lib: use FMT_ as prefix instead of CURL_FORMAT_ For printf format defines used internally. Makes the code slighly easier to read. Closes #14764
|
#
64ab0ace |
| 28-Aug-2024 |
Stefan Eissing |
urldata: remove crlf_conversions counter Since the introduction of client writers, we check the body length in the PROTOCOL phase and do FTP lineend conversions laster in the CONTENT
urldata: remove crlf_conversions counter Since the introduction of client writers, we check the body length in the PROTOCOL phase and do FTP lineend conversions laster in the CONTENT_DECODING phase. This means we no longer need to count the conversions for length checks. Closes #14709
show more ...
|
#
29610e5f |
| 26-Aug-2024 |
Stefan Eissing |
transfer: skip EOS read when download done When we downloaded all we wanted, and we did not want a response body, and no Trailer: has been announced, and the receive gives EAGAIN, do not
transfer: skip EOS read when download done When we downloaded all we wanted, and we did not want a response body, and no Trailer: has been announced, and the receive gives EAGAIN, do not hang around unnecessarily. Some servers are buggy in HEAD processing and fail to send the HTTP/2 EOS. Since we do not need any more data, end the request right there. This will cause us to send a RST_STREAM to the server. Fixes #14670 Reported-by: Gruber Glass Closes #14685
show more ...
|
#
8132b170 |
| 26-Aug-2024 |
Daniel Stenberg |
transfer: remove comments, add asserts Curl_xfer_send and Curl_xfer_recv had commented FIXMEs about protocol setting up the transfers badly, but in reality these functions are too lo
transfer: remove comments, add asserts Curl_xfer_send and Curl_xfer_recv had commented FIXMEs about protocol setting up the transfers badly, but in reality these functions are too low-level to be able to depend on the protocol transfer setups having been done yet. Removed. The functions had checks for data and data->conn that I convered to asserts since they SHOULD always be valid in this function. The same goes for the runtime check for buffer_size > 0 that I also converted to an assert since that should never be set to an invalid value. Closes #14688
show more ...
|
#
89b9fb64 |
| 26-Aug-2024 |
Daniel Stenberg |
pop3: use the protocol handler ->write_resp Remove the "hardcoded" logic for the pop3 transfer handler and instead use the generic protocol handler write_resp function. Remove t
pop3: use the protocol handler ->write_resp Remove the "hardcoded" logic for the pop3 transfer handler and instead use the generic protocol handler write_resp function. Remove the check for 'data->req.ignorebody' because I cannot find a code flow where this is set for POP3. Closes #14684
show more ...
|
#
a58b50fc |
| 15-Aug-2024 |
Stefan Eissing |
transfer: Curl_sendrecv() and event related improvements - Renames Curl_readwrite() to Curl_sendrecv() to reflect that it is mainly about talking to the server, not reads or writes to
transfer: Curl_sendrecv() and event related improvements - Renames Curl_readwrite() to Curl_sendrecv() to reflect that it is mainly about talking to the server, not reads or writes to the client. Add a `nowp` parameter since the single caller already has this. - Curl_sendrecv() now runs all possible operations whenever it is called and either it had been polling sockets or the 'select_bits' are set. POLL_IN/POLL_OUT are not always directly related to send/recv operations. Filters like HTTP/2, QUIC or TLS may monitor reverse directions. If a transfer does not want to send (KEEP_SEND), it will not do so, as before. Same for receives. - Curl_update_timer() now checks the absolute timestamp of an expiry and the last/new timeout to determine if the application needs to stop/start/restart its timer. This fixes edge cases where updates did not happen as they should have. - improved --test-event curl_easy_perform() simulation to handle situations where no sockets are registered but a timeout is in place. - fixed bug in events_socket() that complained about removing a socket that was unknown, when indeed it had removed the socket just before, only it was the last in the list - fixed conncache's internal handle to carry the multi instance (where the cache has one) so that operations on the closure handle trigger event callbacks correctly. - fixed conncache to not POLL_REMOVE a socket twice when a conneciton was closed. Closes #14561
show more ...
|
#
35bf7662 |
| 04-Aug-2024 |
Stefan Eissing |
http2: improved upload eos handling - replace the counting of upload lengths with the new eos send flag - improve frequency of stream draining to happen less on events where it is
http2: improved upload eos handling - replace the counting of upload lengths with the new eos send flag - improve frequency of stream draining to happen less on events where it is not needed - this PR is based on #14220 http2, cf-h2-proxy: fix EAGAINed out buffer - in adjust pollset and shutdown handling, a non-empty `ctx->outbufq` must trigger send polling, irregardless of http/2 flow control - in http2, fix retry handling of blocked GOAWAY frame test case improvement: - let client 'upload-pausing' handle http versions Closes #14253
show more ...
|
#
709a6a39 |
| 25-Jul-2024 |
Stefan Eissing |
cfilters: send flush Since data can be held in connection filter buffers when sending gives EAGAIN, add methods to query this and perform flushing of those buffers. The transfer
cfilters: send flush Since data can be held in connection filter buffers when sending gives EAGAIN, add methods to query this and perform flushing of those buffers. The transfer loop will continue sending until all upload data is processed and the connection is flushed. - add `CF_QUERY_SEND_PENDING` to query filters - add `CF_CTRL_DATA_SEND_FLUSH` to flush filters - change `Curl_req_want_send()` to query the connection if it needs flushing - use `Curl_req_want_send()` to determine the POLLOUT in the PERFORMING multi state - implement flush handling in the HTTP/2 connection filter Closes #14271
show more ...
|
#
911c3166 |
| 18-Jul-2024 |
Stefan Eissing |
lib: add eos flag to send methods Adds a `bool eos` flag to send methods to indicate that the data is the last chunk the invovled transfer wants to send to the server. This will
lib: add eos flag to send methods Adds a `bool eos` flag to send methods to indicate that the data is the last chunk the invovled transfer wants to send to the server. This will help protocol filters like HTTP/2 and 3 to forward the stream's EOF flag and also allow to EAGAIN such calls when buffers are not yet fully flushed. Closes #14220
show more ...
|
#
fc273027 |
| 26-Jul-2024 |
Stefan Eissing |
transfer: speed limiting fix for 32bit systems When checking if a speed limit on receives applies, compare the receive sizes using the large int type to prevent an overflow on systems wh
transfer: speed limiting fix for 32bit systems When checking if a speed limit on receives applies, compare the receive sizes using the large int type to prevent an overflow on systems where size_t is 32bit. Fixes #14272 Reported-by: Mamoru Tasaka Closes #14277
show more ...
|
#
eef17551 |
| 19-Jul-2024 |
Daniel Stenberg |
lib: Curl_posttransfer => multi_posttransfer Moved from transfer.c to multi.c as it was only used within multi.c Made a void, as it returned a fixed return code nothing checked.
lib: Curl_posttransfer => multi_posttransfer Moved from transfer.c to multi.c as it was only used within multi.c Made a void, as it returned a fixed return code nothing checked. Closes #14240
show more ...
|
#
25321de3 |
| 18-Jul-2024 |
Daniel Stenberg |
Revert "lib: send eos flag" This reverts commit be93299f10ef0b2bf7fe5c82140120073831867a.
|
#
be93299f |
| 18-Jul-2024 |
Stefan Eissing |
lib: send eos flag Adds a `bool eos` flag to send methods to indicate that the data is the last chunk the invovled transfer wants to send to the server. This will help protocol
lib: send eos flag Adds a `bool eos` flag to send methods to indicate that the data is the last chunk the invovled transfer wants to send to the server. This will help protocol filters like HTTP/2 and 3 to forward the stream's EOF flag and also allow to EAGAIN such calls when buffers are not yet fully flushed. Closes #14220
show more ...
|
#
b8e098a0 |
| 04-Jul-2024 |
Stefan Eissing |
transfer: avoid polling socket every transfer loop Improve download performance, minimal effort. Do not poll the socket for pending data every transfer loop iteration. This give
transfer: avoid polling socket every transfer loop Improve download performance, minimal effort. Do not poll the socket for pending data every transfer loop iteration. This gives 10-20% performance gains on large HTTP/1.1 downloads (on my machine). Closes #14098
show more ...
|
#
480883cf |
| 01-Jul-2024 |
Stefan Eissing |
multi: fix pollset during RESOLVING phase - add a DEBUGASSERT for when a transfer's pollset should not be empty. - move write unpausing from transfer loop into curl_easy_pause. This
multi: fix pollset during RESOLVING phase - add a DEBUGASSERT for when a transfer's pollset should not be empty. - move write unpausing from transfer loop into curl_easy_pause. This make sure that the url_updatesocket() finds the correct state when updating socket events. - fix HTTP/2 proxy during connect phase to set sockets correctly - fix test2600 to simulate a socket set - move write unpausing from transfer loop into curl_easy_pause. This make sure that the url_updatesocket() finds the correct state when updating socket events. - waiting for the resolver to deliver might not involve any sockets to wait for. Do not generate a warning. Fixes #14047 Closes #14074
show more ...
|