I did this
I am uploading a file to a Microsoft FTP Service using libcurl from C#. This has worked fine, but after updating to libcurl 8.9.1 it seems as if curl_easy_perform() now returns OPERATION_TIMEOUT. The call is going through a socks proxy (needed for me to access the FTP server due to firewall restrictions).
I hope that you can use my description below, even though it is from C#. It is the the verbose output obtained through the CURLoption.DEBUGFUNCTION handler.
Note that the file is actually uploaded - but, if I specify a POSTQUOTE to be run after the upload, then it is not executed.
CURLINFO_TEXT: 09.56.39.337 Trying 52.29.67.170:1080...
CURLINFO_TEXT: 09.56.39.363 Connected to 52.29.67.170 (52.29.67.170) port 1080
CURLINFO_TEXT: 09.56.39.454 Host kamanaftps01.westeurope.cloudapp.azure.com:21 was resolved.
CURLINFO_TEXT: 09.56.39.457 IPv6: (none)
CURLINFO_TEXT: 09.56.39.459 IPv4: 52.174.49.89
CURLINFO_TEXT: 09.56.39.461 SOCKS5 connect to 52.174.49.89:21 (locally resolved)
CURLINFO_TEXT: 09.56.39.495 SOCKS5 request granted.
CURLINFO_TEXT: 09.56.39.497 Connected to 52.29.67.170 (52.29.67.170) port 1080
CURLINFO_HEADER_IN: 09.56.39.504 220 Microsoft FTP Service
CURLINFO_HEADER_OUT: 09.56.39.506 AUTH SSL
CURLINFO_HEADER_IN: 09.56.39.537 234 AUTH command ok. Expecting TLS Negotiation.
CURLINFO_TEXT: 09.56.39.540 TLSv1.2 (OUT), TLS handshake, Client hello (1):
CURLINFO_SSL_DATA_OUT: 09.56.39.542 �CURLINFO_TEXT: 09.56.39.573 TLSv1.2 (IN), TLS handshake, Server hello (2):
CURLINFO_SSL_DATA_IN: 09.56.39.575 �CURLINFO_TEXT: 09.56.39.577 TLSv1.2 (IN), TLS handshake, Certificate (11):
CURLINFO_SSL_DATA_IN: 09.56.39.579 �CURLINFO_TEXT: 09.56.39.581 TLSv1.2 (IN), TLS handshake, Server key exchange (12):
CURLINFO_SSL_DATA_IN: 09.56.39.583 CURLINFO_TEXT: 09.56.39.585 TLSv1.2 (IN), TLS handshake, Server finished (14):
CURLINFO_SSL_DATA_IN: 09.56.39.586 �CURLINFO_TEXT: 09.56.39.588 TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
CURLINFO_SSL_DATA_OUT: 09.56.39.589 �CURLINFO_TEXT: 09.56.39.591 TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
CURLINFO_SSL_DATA_OUT: 09.56.39.592 �
CURLINFO_TEXT: 09.56.39.594 TLSv1.2 (OUT), TLS handshake, Finished (20):
CURLINFO_SSL_DATA_OUT: 09.56.39.596 �CURLINFO_TEXT: 09.56.39.629 TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
CURLINFO_SSL_DATA_IN: 09.56.39.631 �
CURLINFO_TEXT: 09.56.39.633 TLSv1.2 (IN), TLS handshake, Finished (20):
CURLINFO_SSL_DATA_IN: 09.56.39.635 �CURLINFO_TEXT: 09.56.39.636 SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 / [blank] / UNDEF
CURLINFO_TEXT: 09.56.39.638 Server certificate:
CURLINFO_TEXT: 09.56.39.639 subject: CN=kamanaftps01.westeurope.cloudapp.azure.com
CURLINFO_TEXT: 09.56.39.641 start date: Sep 12 05:59:33 2023 GMT
CURLINFO_TEXT: 09.56.39.642 expire date: Oct 13 05:59:33 2024 GMT
CURLINFO_TEXT: 09.56.39.644 subjectAltName: host "kamanaftps01.westeurope.cloudapp.azure.com" matched cert's "kamanaftps01.westeurope.cloudapp.azure.com"
CURLINFO_TEXT: 09.56.39.646 issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
CURLINFO_TEXT: 09.56.39.647 SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
CURLINFO_TEXT: 09.56.39.649 Certificate level 0: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
CURLINFO_TEXT: 09.56.39.651 Certificate level 1: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
CURLINFO_HEADER_OUT: 09.56.39.653 USER username
CURLINFO_HEADER_IN: 09.56.39.685 331 Password required
CURLINFO_HEADER_OUT: 09.56.39.687 PASS password
CURLINFO_HEADER_IN: 09.56.39.734 230 User logged in.
CURLINFO_HEADER_OUT: 09.56.39.736 PBSZ 0
CURLINFO_HEADER_IN: 09.56.39.768 200 PBSZ command successful.
CURLINFO_HEADER_OUT: 09.56.39.770 PROT P
CURLINFO_HEADER_IN: 09.56.39.802 200 PROT command successful.
CURLINFO_HEADER_OUT: 09.56.39.805 PWD
CURLINFO_HEADER_IN: 09.56.39.837 257 "/" is current directory.
CURLINFO_TEXT: 09.56.39.840 Entry path is '/'
CURLINFO_TEXT: 09.56.39.842 Request has same path as previous transfer
CURLINFO_HEADER_OUT: 09.56.39.844 EPSV
CURLINFO_TEXT: 09.56.39.846 Connect data stream passively
CURLINFO_HEADER_IN: 09.56.39.876 229 Entering Extended Passive Mode (|||16897|)
CURLINFO_TEXT: 09.56.39.878 Hostname 52.29.67.170 was found in DNS cache
CURLINFO_TEXT: 09.56.39.880 Connecting to kamanaftps01.westeurope.cloudapp.azure.com (52.29.67.170) port 1080
CURLINFO_TEXT: 09.56.39.882 Trying 52.29.67.170:1080...
CURLINFO_TEXT: 09.56.39.907 Connected 2nd connection to 52.29.67.170 port 1080
CURLINFO_TEXT: 09.56.39.968 Host kamanaftps01.westeurope.cloudapp.azure.com:16897 was resolved.
CURLINFO_TEXT: 09.56.39.970 IPv6: (none)
CURLINFO_TEXT: 09.56.39.972 IPv4: 52.174.49.89
CURLINFO_TEXT: 09.56.39.974 SOCKS5 connect to 52.174.49.89:16897 (locally resolved)
CURLINFO_TEXT: 09.56.40.007 SOCKS5 request granted.
CURLINFO_TEXT: 09.56.40.010 Connected 2nd connection to 52.29.67.170 port 1080
CURLINFO_TEXT: 09.56.40.012 SSL reusing session ID
CURLINFO_TEXT: 09.56.40.015 TLSv1.2 (OUT), TLS handshake, Client hello (1):
CURLINFO_SSL_DATA_OUT: 09.56.40.017 �CURLINFO_HEADER_OUT: 09.56.40.019 TYPE I
CURLINFO_HEADER_IN: 09.56.40.050 200 Type set to I.
CURLINFO_HEADER_OUT: 09.56.40.053 STOR upload-testfile-5e047ec0-0bc6-4eab-854d-9c5a70f2ae61.txt.tmp
CURLINFO_HEADER_IN: 09.56.40.125 125 Data connection already open; Transfer starting.
CURLINFO_TEXT: 09.56.40.128 TLSv1.2 (IN), TLS handshake, Server hello (2):
CURLINFO_SSL_DATA_IN: 09.56.40.130 �CURLINFO_TEXT: 09.56.40.132 TLSv1.2 (IN), TLS handshake, Certificate (11):
CURLINFO_SSL_DATA_IN: 09.56.40.134 �CURLINFO_TEXT: 09.56.40.136 TLSv1.2 (IN), TLS handshake, Server key exchange (12):
CURLINFO_SSL_DATA_IN: 09.56.40.138 CURLINFO_TEXT: 09.56.40.140 TLSv1.2 (IN), TLS handshake, Server finished (14):
CURLINFO_SSL_DATA_IN: 09.56.40.142 �CURLINFO_TEXT: 09.56.40.145 TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
CURLINFO_SSL_DATA_OUT: 09.56.40.146 �CURLINFO_TEXT: 09.56.40.149 TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
CURLINFO_SSL_DATA_OUT: 09.56.40.150 �
CURLINFO_TEXT: 09.56.40.153 TLSv1.2 (OUT), TLS handshake, Finished (20):
CURLINFO_SSL_DATA_OUT: 09.56.40.154 �CURLINFO_TEXT: 09.56.40.188 TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
CURLINFO_SSL_DATA_IN: 09.56.40.190 �
CURLINFO_TEXT: 09.56.40.192 TLSv1.2 (IN), TLS handshake, Finished (20):
CURLINFO_SSL_DATA_IN: 09.56.40.194 �CURLINFO_TEXT: 09.56.40.196 SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 / [blank] / UNDEF
CURLINFO_TEXT: 09.56.40.198 Server certificate:
CURLINFO_TEXT: 09.56.40.200 subject: CN=kamanaftps01.westeurope.cloudapp.azure.com
CURLINFO_TEXT: 09.56.40.202 start date: Sep 12 05:59:33 2023 GMT
CURLINFO_TEXT: 09.56.40.204 expire date: Oct 13 05:59:33 2024 GMT
CURLINFO_TEXT: 09.56.40.206 subjectAltName: host "kamanaftps01.westeurope.cloudapp.azure.com" matched cert's "kamanaftps01.westeurope.cloudapp.azure.com"
CURLINFO_TEXT: 09.56.40.208 issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
CURLINFO_TEXT: 09.56.40.210 SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
CURLINFO_TEXT: 09.56.40.212 Certificate level 0: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
CURLINFO_TEXT: 09.56.40.214 Certificate level 1: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
CURLINFO_DATA_OUT: 09.56.40.217 This is a testfile
CURLINFO_TEXT: 09.56.40.219 TLSv1.2 (OUT), TLS alert, close notify (256):
CURLINFO_SSL_DATA_OUT: 09.56.40.221 �CURLINFO_TEXT: 09.56.42.234 SSL shutdown timeout
CURLINFO_TEXT: 09.56.42.236 closing connection #0
Let me know if there is some CURLOption that I can specify to help with diagnosing the issue further.
I can do the same uploads to a vsftpd server without any issues.
I believe this is related to #13904.
I expected the following
I expect the perform operation to not return an error, and if a POSTQUOTE is specified, to have it be executed.
curl/libcurl version
libcurl 8.9.1 (this worked in libcurl 8.8.0)
operating system
I have tried both on Windows and alpine linux with verified libcurl 8.9.1
I did this
I am uploading a file to a Microsoft FTP Service using libcurl from C#. This has worked fine, but after updating to libcurl 8.9.1 it seems as if
curl_easy_perform()now returnsOPERATION_TIMEOUT. The call is going through a socks proxy (needed for me to access the FTP server due to firewall restrictions).I hope that you can use my description below, even though it is from C#. It is the the verbose output obtained through the
CURLoption.DEBUGFUNCTIONhandler.Note that the file is actually uploaded - but, if I specify a
POSTQUOTEto be run after the upload, then it is not executed.Let me know if there is some
CURLOptionthat I can specify to help with diagnosing the issue further.I can do the same uploads to a
vsftpdserver without any issues.I believe this is related to #13904.
I expected the following
I expect the perform operation to not return an error, and if a
POSTQUOTEis specified, to have it be executed.curl/libcurl version
libcurl 8.9.1 (this worked in libcurl 8.8.0)
operating system
I have tried both on Windows and alpine linux with verified libcurl 8.9.1