cURL / Mailing Lists / curl-library / Single Mail

curl-library

RE: Multi Interface loop hanging with FTP-Transfer on Win32, curl-7.18.2

From: Andreas Wurf <awurf_at_adobe.com>
Date: Thu, 21 Aug 2008 09:10:18 +0100

Hi all,

thank you, Daniel, for the quick response.

> > It seems like libcurl is waiting on a response from the server, but
> > the final "226 Transfer complete" from the server is missed by
libcurl.
>
> So it is sent by the server and received by your computer but libcurl
> doesn't "see" it?

Yes, so it seems. These are the last few lines my program dumps, right
before it hangs:

  -------> Read 16384 bytes from
"d:\Work\NetIO-Test\EasyMultiTest\data\Debug\EasyMultiTest.pch"
  -------> Read 16384 bytes from
"d:\Work\NetIO-Test\EasyMultiTest\data\Debug\EasyMultiTest.pch"
  -------> Read 16384 bytes from
"d:\Work\NetIO-Test\EasyMultiTest\data\Debug\EasyMultiTest.pch"
  -------> Closing
"d:\Work\NetIO-Test\EasyMultiTest\data\Debug\EasyMultiTest.pch"
  * STATE: PERFORM => DONE handle 0x4d5c00; (connection #3)
  * Expire cleared
  * Remembering we are in dir
"testfiles/awurf/EasyMultiTest/data/Debug/"
  < 226 Transfer complete.
  * Connection #3 to host dreamhh01.eur.adobe.com left intact
  * STATE: DONE => COMPLETED handle 0x4d5c00; (connection #-5000)
  -------> Remove handle 004E7870, code 0: No error -> Cleanup
  ============================ HANG ============================

Lines starting with "------->" are generated by the program, see listing
at <http://curl.haxx.se/mail/lib-2008-08/0276.html>. So, the "226
Transfer complete." Is received by libcurl and even dumped out. I don't
know, if the hanger has to do with a missed "226" code. All I see is
that the code is obviously sent by the server and received by libcurl.

> > After a reasonable timeout (10 minutes or so), the server sends a
> > timeout response (a "421" code, if I remember correctly) which is
> > recognized by the libcurl client.
>
> ... but this response is found and recognized?

I can't say exactly. After the program hangs for a few minutes, it
awakes and the next lines I see are like follows:

  ============================ HANG ============================
  * FTP response reading failed
  * Closing connection #2
  * STATE: DOING => COMPLETED handle 0x4f9238; (connection #-5000)
> QUIT
  * FTP 0x50b178 state change from STOP to QUIT
  < 421 No Transfer Timeout (600 seconds): closing control connection.
  * FTP 0x50b178 state change from QUIT to STOP
  * Closing connection #0
> QUIT
  * FTP 0x50b9c0 state change from STOP to QUIT
  < 421 No Transfer Timeout (600 seconds): closing control connection.
  * FTP 0x50b9c0 state change from QUIT to STOP
  * Closing connection #1
> QUIT
  * FTP 0x50ce70 state change from STOP to QUIT
  < 421 No Transfer Timeout (600 seconds): closing control connection.
  * FTP 0x50ce70 state change from QUIT to STOP
  * Closing connection #3

This gives the mentioned "421" response code. But it gets even weird.
Today in the morning, on one test run I got the following result after
the hanger:

  ============================ HANG ============================
  * FTP response reading failed
  * Closing connection #0
  * STATE: DOING => COMPLETED handle 0x4f9238; (connection #-5000)
> QUIT
  * FTP 0x50b9c0 state change from STOP to QUIT
  < 221 Goodbye.
  * FTP 0x50b9c0 state change from QUIT to STOP
  * Closing connection #1
> QUIT
  * FTP 0x50c418 state change from STOP to QUIT
  < 221 Goodbye.
  * FTP 0x50c418 state change from QUIT to STOP
  * Closing connection #2
> QUIT
  * FTP 0x50ce70 state change from STOP to QUIT
  < 221 Goodbye.
  * FTP 0x50ce70 state change from QUIT to STOP
  * Closing connection #3

Seems quite similar, but the server response is a "221". So I suppose
that it is libcurl that waits for something. The line "FTP response
reading failed" tells the same story.

Besides: Tests with the easy interface have never shown this hanger on
the same server and transfer data.

Regards,
Andreas
Received on 2008-08-21