(trunk libT) #3117 "Tracker queries do not honor bind-address-ipv4" -- possible fix

This commit is contained in:
Charles Kerr 2010-04-28 00:32:43 +00:00
parent efe648e2d7
commit 4b5044ad28
3 changed files with 7 additions and 19 deletions

View File

@ -718,7 +718,6 @@ sessionSetImpl( void * vdata )
b.addr = tr_inaddr_any;
b.socket = -1;
session->public_ipv4 = tr_memdup( &b, sizeof( struct tr_bindinfo ) );
tr_webSetInterface( session, &session->public_ipv4->addr );
str = TR_PREFS_KEY_BIND_ADDRESS_IPV6;
tr_bencDictFindStr( settings, TR_PREFS_KEY_BIND_ADDRESS_IPV6, &str );

View File

@ -55,10 +55,8 @@ enum
struct tr_web
{
int close_mode;
tr_bool haveAddr;
tr_list * tasks;
tr_lock * taskLock;
tr_address addr;
};
@ -139,8 +137,9 @@ getTimeoutFromURL( const char * url )
}
static CURL *
createEasy( tr_session * s, struct tr_web * w, struct tr_web_task * task )
createEasy( tr_session * s, struct tr_web_task * task )
{
const tr_address * addr;
CURL * e = curl_easy_init( );
const long verbose = getenv( "TR_CURL_VERBOSE" ) != NULL;
@ -177,8 +176,10 @@ createEasy( tr_session * s, struct tr_web * w, struct tr_web_task * task )
curl_easy_setopt( e, CURLOPT_VERBOSE, verbose );
curl_easy_setopt( e, CURLOPT_WRITEDATA, task );
curl_easy_setopt( e, CURLOPT_WRITEFUNCTION, writeFunc );
if( w->haveAddr )
curl_easy_setopt( e, CURLOPT_INTERFACE, tr_ntop_non_ts( &w->addr ) );
if(( addr = tr_sessionGetPublicAddress( s, TR_AF_INET )))
curl_easy_setopt( e, CURLOPT_INTERFACE, tr_ntop_non_ts( addr ) );
if( task->range )
curl_easy_setopt( e, CURLOPT_RANGE, task->range );
@ -235,16 +236,6 @@ tr_webRun( tr_session * session,
}
}
void
tr_webSetInterface( tr_session * session, const tr_address * addr )
{
struct tr_web * web = session->web;
if( web != NULL )
if(( web->haveAddr = ( addr != NULL )))
web->addr = *addr;
}
static void
tr_webThreadFunc( void * vsession )
{
@ -282,7 +273,7 @@ tr_webThreadFunc( void * vsession )
tr_lockLock( web->taskLock );
while(( task = tr_list_pop_front( &web->tasks )))
{
curl_multi_add_handle( multi, createEasy( session, web, task ));
curl_multi_add_handle( multi, createEasy( session, task ));
/*fprintf( stderr, "adding a task.. taskCount is now %d\n", taskCount );*/
++taskCount;
}

View File

@ -26,8 +26,6 @@ tr_web_close_mode;
void tr_webClose( tr_session * session, tr_web_close_mode close_mode );
void tr_webSetInterface( tr_session * session, const struct tr_address * addr );
typedef void ( tr_web_done_func )( tr_session * session,
long response_code,
const void * response,