From eb538aa49298719cc0ebc1151341dcb909949796 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 6 Feb 2009 21:14:05 +0000 Subject: [PATCH] (trunk libT) #1748 keep looking for a workaround --- libtransmission/web.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libtransmission/web.c b/libtransmission/web.c index cf70fdf18..65e63c09f 100644 --- a/libtransmission/web.c +++ b/libtransmission/web.c @@ -263,15 +263,25 @@ remove_finished_tasks( tr_web * g ) if( easy ) { long code; + long fd; struct tr_web_task * task; CURLcode ecode; CURLMcode mcode; + ecode = curl_easy_getinfo( easy, CURLINFO_PRIVATE, (void*)&task ); tr_assert( ecode == CURLE_OK, "curl_easy_getinfo() failed: %d (%s)", ecode, curl_easy_strerror( ecode ) ); + ecode = curl_easy_getinfo( easy, CURLINFO_RESPONSE_CODE, &code ); tr_assert( ecode == CURLE_OK, "curl_easy_getinfo() failed: %d (%s)", ecode, curl_easy_strerror( ecode ) ); + + ecode = curl_easy_getinfo( easy, CURLINFO_LASTSOCKET, &fd ); + tr_assert( ecode == CURLE_OK, "curl_easy_getinfo() failed: %d (%s)", ecode, curl_easy_strerror( ecode ) ); + if( fd != -1L ) + purgeSockinfo( g, fd ); + mcode = curl_multi_remove_handle( g->multi, easy ); tr_assert( mcode == CURLM_OK, "curl_multi_socket_action() failed: %d (%s)", mcode, curl_multi_strerror( mcode ) ); + curl_easy_cleanup( easy ); task_finish( task, code ); }