cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: [PATCH] ftp: prevent server from hanging on closed data connection

From: e-mail number.cruncher <number.cruncher_at_ntlworld.com>
Date: Thu, 4 Nov 2010 20:45:10 +0000

On 4 November 2010 20:03, Kamil Dudka <kdudka_at_redhat.com> wrote:
> On Thursday 04 November 2010 20:50:01 e-mail number.cruncher wrote:
>> In order to get something working with Red Hat's anaconda's use of
>> curl --range and FTP servers, I think there are two options:
>> a) Don't use ABOR at all; download everything. I note that the curl
>> manpage suggests that this may be the behaviour anyway with some
>> HTTP/1.1 servers
>
> That is something easy to achieve at application level.  If there are some
> FTP servers that have been working well with curl range downloads, it would
> be a bit selfish to disable it globally just because of Anaconda.
>

I don't think this *is* an anaconda problem; it's just wrong at the
moment to send ABOR and not know how the server response will affect
the session. It's not a server bug; the protocol is just too open to
intepretation, particularly when it comes to URG TCP handling. There's
a fundamental race condition between whether the server is push data
to the client and discovers socket disconnect, or whether is examining
the command queue from the client.

>> b) Send ABOR, then close session immediately and re-connect for other
>> files. I'm not sure why curl maintains a connection to the server in
>> such a case; as far as I can tell, the command-line --range option can
>> only be used once anyway, and wouldn't be appropriate for multiple
>> transfers.
>
> The code we are patching is actually a part of libcurl, which is a library.
> curl is only command line tool based on the library.  The library provides
> so called 'easy' and 'multi' interfaces, which make it possible to gain more
> from reused connections.  After all anaconda also (indirectly) uses libcurl,
> since there is AFAIK no curl tool available on the installation image.
>

Yes, I realise libcurl does the main work. So how about (a) send ABOR
(b) tear down connection (c) reconnect and authenticate for subsequent
files?
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2010-11-04