Change #275091
| Category | curl |
| Changed by | Graham Campbell <hello@gjcampbell.co.uk> |
| Changed at | Fri 17 Jul 2026 10:00:56 |
| Repository | https://github.com/curl/curl.git |
| Project | curl |
| Branch | master |
| Revision | 820c014578b56b9fa4d2c472e90b5060198dd404 |
Comments
cfilters: fix event-based connection shutdown - Adjust pollset during connection shutdown. - Separate the FIRSTSOCKET and SECONDSOCKET check so that one being in connect or shutdown no longer adds poll events for the other. - Fix shutdown state evaluation (as detailed below). - Add a unit test for Curl_conn_adjust_pollset. - Add a client for event testing. - Test that shutdown sockets stay with the socket callback until done. The pollset predicate now reads the connection's own shutdown state rather than going through data->conn, and the EXPIRE_SHUTDOWN arming in cshutdn_perform() works again: next_expire_ms started at 0 and could never be set, so a peer that never sends a close_notify would still park its connection forever, timeout or not. Reported-by: pszemus@users.noreply.github.com Fixes https://github.com/curl/curl/issues/22282 Closes https://github.com/curl/curl/pull/22304
Changed files
- lib/cfilters.c
- lib/connect.c
- lib/connect.h
- lib/cshutdn.c
- lib/transfer.c
- tests/data/Makefile.am
- tests/data/test2606
- tests/http/test_19_shutdown.py
- tests/libtest/Makefile.inc
- tests/libtest/cli_ev_download.c
- tests/unit/Makefile.inc
- tests/unit/unit2606.c