> Am 04.09.2024 um 15:20 schrieb Yoshimasa Ohno <momon...@gmail.com>: > > Okay. > > I was able to reproduce it with '--trace-time --trace-config all'. > (full command: 'curl --ftp-port - --ssl-reqd -u Anonymous: ftp://127.0.0.1/ > -k --trace-time --trace-config all --trace trace-log2.txt') > > Attached is the trace file. > > ---- Excerpt lines 450-460. > 22:10:18.797429 [0-0] == Info: Preparing for accepting server on data port > 22:10:18.797432 [0-0] == Info: Checking for server connect > 22:10:18.797437 [0-0] == Info: [FTP] AllowServerConnect() -> 0 > 22:10:18.797439 [0-0] == Info: Data conn was not available immediately > 22:10:18.797441 [0-0] == Info: [FTP] [LIST] -> [STOP] > 22:10:18.797443 [0-0] == Info: Checking for server connect > 22:10:18.797447 [0-0] == Info: [FTP] [STOP] ftp_domore_getsock() > 22:10:19.808368 [0-0] == Info: Checking for server connect > 22:10:19.808411 [0-0] == Info: Ready to accept data connection from server > 22:10:19.808651 [0-0] == Info: Connection accepted from server > 22:10:19.808772 [0-0] == Info: [TCP-ACCEPT-1] accepted_set(sock=508, > remote=127.0.0.1 port=63175) > ---- > > Here you can see that it is weighted for 1 second
Thank you! I found the condition that prevented my former fix to be working. I made https://github.com/curl/curl/pull/14786 with the real solution which I was able to verify with some new test cases. Hope this works for you as well! - Stefan > > > 2024年9月4日(水) 20:59 Stefan Eissing <ste...@eissing.org>: > > > > Am 04.09.2024 um 13:41 schrieb Yoshimasa Ohno via curl-library > > <curl-library@lists.haxx.se>: > > > > Thanks for the response! > > > > I tried a local build including > > https://github.com/curl/curl/commit/a07ba37b5e88a89bf4bcc6b0c927f7a42d7ea4f2 > > Unfortunately, it did not solve the problem I am experiencing in my > > environment. > > > > Even just adding printf debugging. > > I don't know where the real cause is, because the problem is no longer > > reproduced. > > > > One of the conditions for the occurrence of the Dalay problem seems to be > > that the ReceivedServerConnect function exits in the socket unestablished > > state. > > ReceivedServerConnect function seems to occur when the following, > > unestablished state comes through. > > https://github.com/curl/curl/blob/6a9b71037a441eac28d3c7f629ac5801c01f99e2/lib/ftp.c#L572C1-L573C22 > > case 0: /* Server connect is not received yet */ > > break; /* loop */ > > > > When a problem occurs, there is a delay of timeout time (standard is 1 > > second, extended that way if modified) in the following > > WSAWaitForMultipleEvents. > > https://github.com/curl/curl/blob/6a9b71037a441eac28d3c7f629ac5801c01f99e2/lib/multi.c#L1366 > > else { /* now wait... if not ready during the pre-check (pollrc == 0) */ > > WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, > > (DWORD)timeout_ms, > > FALSE); > > } > > > > Is there anything I can try? > > Can you produce a log file via 'curl -v --trace-config all' of such a > situation? > > As you describe it, the delay happens when the first check on the listening > socket does > not find anything and curl goes POLLing for socket events. The arriving > server connect > should then trigger the processing right away, but maybe there is something > else in play here. > > - Stefan > > > 2024年9月3日(火) 16:59 Stefan Eissing via curl-library > > <curl-library@lists.haxx.se>: > > I created https://github.com/curl/curl/pull/14766 as a fix for this. > > > > The bug was that the socket was not using POLLIN, but POLLOUT. So it never > > triggered an event when the FTP server tried to connect. That led to the > > connect only being noticed a second later when curl checks on all transfers. > > > > Hope this works for you. > > > > > > > Am 03.09.2024 um 08:13 schrieb Daniel Stenberg via curl-library > > > <curl-library@lists.haxx.se>: > > > > > > On Sat, 31 Aug 2024, Yoshimasa Ohno via curl-library wrote: > > > > > >> I found that the timeout argument of curl_multi_poll, the literal 1000, > > >> was having an effect. Changing this to 3000 resulted in a 3 second wait. > > > > > > We believe there might be a bug in the code that sets what socket > > > activity curl should wait for when waiting for the connect to happen. (A > > > regression) > > > > > > Stefan is going to try to get a fix made and submitted soon. > > > > > > -- > > > > > > / daniel.haxx.se > > > | Commercial curl support up to 24x7 is available! > > > | Private help, bug fixes, support, ports, new features > > > | https://curl.se/support.html > > > -- > > > Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library > > > Etiquette: https://curl.se/mail/etiquette.html > > > > -- > > Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library > > Etiquette: https://curl.se/mail/etiquette.html > > -- > > Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library > > Etiquette: https://curl.se/mail/etiquette.html > > <trace-log2.txt> -- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.html