Hi,
What are the possible ways to clear cURL connection cache? One way would be to 
close the current multi handle and open a new one. Are there some other 
options? I've got a situation where connection cache is kept through internet 
connection change (Wifi -> 3G for example). After network change cURL will try 
to reuse the connection from cache and will fail and open a new connection. The 
problem is that it takes ~20 seconds to understand that the connection was 
dead. Are there any ways to overcome this? I'd still like to reuse connections 
when possible. I could force requests with CURLOPT_FRESH_CONNECT after network 
change for some time but that's not ideal.
Regards,Risto
Here's the example cURL output for this problem:
2016-07-05 15:51:34.155 //First request* STATE: INIT => CONNECT handle 
0x8604f8; line 1090 (connection #-5000)* Added connection 0. The cache now 
contains 1 members* timeout on name lookup is not supported*   Trying 
54.175.219.8...* STATE: CONNECT => WAITCONNECT handle 0x8604f8; line 1143 
(connection #0)* Connected to www.httpbin.org (54.175.219.8) port 80 (#0)* 
STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x8604f8; line 1240 (connection 
#0)* STATE: SENDPROTOCONNECT => WAITDO handle 0x8604f8; line 1258 (connection 
#0)* STATE: WAITDO => DO handle 0x8604f8; line 1290 (connection #0)* STATE: DO 
=> DO_DONE handle 0x8604f8; line 1337 (connection #0)* STATE: DO_DONE => 
WAITPERFORM handle 0x8604f8; line 1464 (connection #0)* STATE: WAITPERFORM => 
PERFORM handle 0x8604f8; line 1474 (connection #0)* STATE: PERFORM => DONE 
handle 0x8604f8; line 1632 (connection #0)* Curl_done* Connection #0 to host 
www.httpbin.org left intact
2016-07-05 15:52:04.741 //Second request* STATE: INIT => CONNECT handle 
0x8604f8; line 1090 (connection #-5000)* Found bundle for host www.httpbin.org: 
0x853d38* Re-using existing connection! (#0) with host www.httpbin.org* 
Connected to www.httpbin.org (54.175.219.8) port 80 (#0)* STATE: CONNECT => 
WAITDO handle 0x8604f8; line 1136 (connection #0)* STATE: WAITDO => DO handle 
0x8604f8; line 1290 (connection #0)* STATE: DO => DO_DONE handle 0x8604f8; line 
1337 (connection #0)* STATE: DO_DONE => WAITPERFORM handle 0x8604f8; line 1464 
(connection #0)* STATE: WAITPERFORM => PERFORM handle 0x8604f8; line 1474 
(connection #0)
2016-07-05 15:52:23.626 //Connection is dead - retry Recv failure: Connection 
was reset* Connection died, retrying a fresh connect* Curl_done* Closing 
connection 0* The cache now contains 0 members* Issue another request to this 
URL: 'http://www.httpbin.org/get'* STATE: PERFORM => CONNECT handle 0x8604f8; 
line 1608 (connection #-5000)* Added connection 1. The cache now contains 1 
members* timeout on name lookup is not supported* Hostname www.httpbin.org was 
found in DNS cache*   Trying 54.175.219.8...* STATE: CONNECT => WAITCONNECT 
handle 0x8604f8; line 1143 (connection #1)* Connected to www.httpbin.org 
(54.175.219.8) port 80 (#1)* STATE: WAITCONNECT => SENDPROTOCONNECT handle 
0x8604f8; line 1240 (connection #1)* STATE: SENDPROTOCONNECT => WAITDO handle 
0x8604f8; line 1258 (connection #1)* STATE: WAITDO => DO handle 0x8604f8; line 
1290 (connection #1)* STATE: DO => DO_DONE handle 0x8604f8; line 1337 
(connection #1)* STATE: DO_DONE => WAITPERFORM handle 0x8604f8; line 1464 
(connection #1)* STATE: WAITPERFORM => PERFORM handle 0x8604f8; line 1474 
(connection #1)* STATE: PERFORM => DONE handle 0x8604f8; line 1632 (connection 
#1)* Curl_done* Connection #1 to host www.httpbin.org left intact
-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:  https://curl.haxx.se/mail/etiquette.html

Reply via email to