cURL / Mailing Lists / curl-library / Single Mail


Re: Problem with reusing persistent connections

From: Dan Fandrich <>
Date: Thu, 13 Sep 2007 13:10:40 -0700

On Thu, Sep 13, 2007 at 09:45:10PM +0200, Stefan Krause wrote:
> Normally I do more than one transfer between the physical connection goes
> down (due to segmented transfers). As always HTTPS is used I get a big
> overhead with the SSL handshakes when CURLOPT_FORBID_REUSE is used.
> Calling curl_easy_cleanup() seems to be the only function which closes the
> socket connections on demand, I found nothing similar. That call will also
> delete all the other options and data associated with the handle.
> Unfortunately I need this information for continuing the segmented HTTP
> transfer.

Sounds like you want a curl_easy_close() or something to only close any
sockets reserved by that easy handle but leave everything else unchanged.

> So one solution might be the following: After the physical
> connection has been reestablished, the configurations (urls, proxy
> settings, etc.) of each easy_handle are saved. Then all easy handles are
> cleared and new handles are created and configured with the saved
> configuration. Then I have got identical configured easy handles as before
> and none of them with an open connection. Running them would led to the
> creation of new socket connections and SSL handshaked an the transfer can
> continued immediately without waiting for the socket connection timeout to
> expire. The SSL handshake is no overhead here, as it has to be done again
> nonetheless. This reestablishment procedure won't happen two often, so it
> should be ok. What do you think? Did I miss something important?

That sounds effectively the same thing--after restoring the handle state,
the only thing that's different is that the sockets are closed.

>> There's no reliable way for libcurl to tell if the "physical connection"
>> has
>> gone down. In the Mobile IP case, even that wouldn't be grounds enough
>> to close the sockets.
> I did not understand that correctly. May you be so kind to explain it a
> little more?

In the Mobile IP case, you can maintain a connection using the Mobile IP
address even when the physical layer has been pulled out from under you.
When the physical layer returns (it can be a different physical layer with
a different IP address), the Mobile IP connection continues as though
nothing happened. It's designed for exactly your kind of situation, and is
included as part of 3GPP2's cdma2000 specifications, so CDMA cellphones
already have it.

>>> Dan

--              The web change of address service
          Let webmasters know that your web site has moved
Received on 2007-09-13