(trunk) fix r9380 #2412 timing issue

This commit is contained in:
Charles Kerr
2009-10-23 05:48:56 +00:00
parent 37aaf66d4e
commit 55c59fa478
3 changed files with 17 additions and 7 deletions
+2 -1
View File
@@ -688,7 +688,7 @@ tr_sessionInitImpl( void * vdata )
tr_statsInit( session );
session->web = tr_webInit( session, &session->public_ipv4->addr );
session->web = tr_webInit( session );
--session->waiting;
///cccc
@@ -794,6 +794,7 @@ sessionSetImpl( void * vdata )
b.addr = tr_inaddr_any;
b.socket = -1;
session->public_ipv4 = tr_memdup( &b, sizeof( struct tr_bindinfo ) );
tr_webSetInterface( session->web, &session->public_ipv4->addr );
str = TR_PREFS_KEY_BIND_ADDRESS_IPV6;
tr_bencDictFindStr( settings, TR_PREFS_KEY_BIND_ADDRESS_IPV6, &str );
+12 -4
View File
@@ -86,7 +86,8 @@ struct tr_web
long timer_ms;
CURLM * multi;
tr_session * session;
const tr_address * addr;
tr_bool haveAddr;
tr_address addr;
struct event timer_event;
tr_list * fds;
};
@@ -237,7 +238,8 @@ addTask( void * vtask )
TR_NAME "/" LONG_VERSION_STRING );
curl_easy_setopt( easy, CURLOPT_VERBOSE,
getenv( "TR_CURL_VERBOSE" ) != NULL );
curl_easy_setopt( easy, CURLOPT_INTERFACE, tr_ntop_non_ts( web->addr ) );
if( web->haveAddr )
curl_easy_setopt( easy, CURLOPT_INTERFACE, tr_ntop_non_ts( &web->addr ) );
curl_easy_setopt( easy, CURLOPT_WRITEDATA, task );
curl_easy_setopt( easy, CURLOPT_WRITEFUNCTION, writeFunc );
if( task->range )
@@ -523,8 +525,15 @@ tr_webRun( tr_session * session,
}
}
void
tr_webSetInterface( tr_web * web, const tr_address * addr )
{
if(( web->haveAddr = ( addr != NULL )))
web->addr = *addr;
}
tr_web*
tr_webInit( tr_session * session, const struct tr_address * addr )
tr_webInit( tr_session * session )
{
CURLMcode mcode;
static int curlInited = FALSE;
@@ -542,7 +551,6 @@ tr_webInit( tr_session * session, const struct tr_address * addr )
web = tr_new0( struct tr_web, 1 );
web->multi = curl_multi_init( );
web->session = session;
web->addr = addr;
web->timer_ms = DEFAULT_TIMER_MSEC; /* overwritten by multi_timer_cb() */
evtimer_set( &web->timer_event, timer_cb, web );
+3 -2
View File
@@ -16,11 +16,12 @@
struct tr_address;
typedef struct tr_web tr_web;
tr_web* tr_webInit( tr_session * session,
const struct tr_address * addr );
tr_web* tr_webInit( tr_session * session );
void tr_webClose( tr_web ** );
void tr_webSetInterface( tr_web * web, const struct tr_address * addr );
typedef void ( tr_web_done_func )( tr_session * session,
long response_code,
const void * response,