struct announce_data
{
- tr_session * session;
tr_announce_response response;
tr_announce_response_func * response_func;
void * response_func_user_data;
struct announce_data * data = vdata;
if( data->response_func != NULL )
- data->response_func( data->session,
- &data->response,
- data->response_func_user_data );
+ data->response_func( &data->response, data->response_func_user_data );
tr_free( data->response.pex6 );
tr_free( data->response.pex );
char * url = announce_url_new( session, request );
d = tr_new0( struct announce_data, 1 );
- d->session = session;
d->response_func = response_func;
d->response_func_user_data = response_func_user_data;
memcpy( d->response.info_hash, request->info_hash, SHA_DIGEST_LENGTH );
struct scrape_data
{
- tr_session * session;
tr_scrape_response response;
tr_scrape_response_func * response_func;
void * response_func_user_data;
struct scrape_data * data = vdata;
if( data->response_func != NULL )
- data->response_func( data->session,
- &data->response,
- data->response_func_user_data );
+ data->response_func( &data->response, data->response_func_user_data );
tr_free( data->response.errmsg );
tr_free( data->response.url );
char * url = scrape_url_new( request );
d = tr_new0( struct scrape_data, 1 );
- d->session = session;
d->response.url = tr_strdup( request->url );
d->response_func = response_func;
d->response_func_user_data = response_func_user_data;
}
static void
-tau_scrape_request_finished( tr_session * session,
- const struct tau_scrape_request * request )
+tau_scrape_request_finished( const struct tau_scrape_request * request )
{
if( request->callback != NULL )
- request->callback( session, &request->response, request->user_data );
+ request->callback( &request->response, request->user_data );
}
static void
-tau_scrape_request_fail( tr_session * session,
- struct tau_scrape_request * request,
+tau_scrape_request_fail( struct tau_scrape_request * request,
bool did_connect,
bool did_timeout,
const char * errmsg )
request->response.did_connect = did_connect;
request->response.did_timeout = did_timeout;
request->response.errmsg = tr_strdup( errmsg );
- tau_scrape_request_finished( session, request );
+ tau_scrape_request_finished( request );
}
static void
-on_scrape_response( tr_session * session,
- struct tau_scrape_request * request,
+on_scrape_response( struct tau_scrape_request * request,
tau_action_t action,
struct evbuffer * buf )
{
row->leechers = evbuffer_read_ntoh_32( buf );
}
- tau_scrape_request_finished( session, request );
+ tau_scrape_request_finished( request );
}
else
{
else
errmsg = tr_strdup( _( "Unknown error" ) );
- tau_scrape_request_fail( session, request, true, false, errmsg );
+ tau_scrape_request_fail( request, true, false, errmsg );
tr_free( errmsg );
}
}
}
static void
-tau_announce_request_finished( tr_session * session,
- const struct tau_announce_request * request )
+tau_announce_request_finished( const struct tau_announce_request * request )
{
if( request->callback != NULL )
- request->callback( session, &request->response, request->user_data );
+ request->callback( &request->response, request->user_data );
}
static void
-tau_announce_request_fail( tr_session * session,
- struct tau_announce_request * request,
+tau_announce_request_fail( struct tau_announce_request * request,
bool did_connect,
bool did_timeout,
const char * errmsg )
request->response.did_connect = did_connect;
request->response.did_timeout = did_timeout;
request->response.errmsg = tr_strdup( errmsg );
- tau_announce_request_finished( session, request );
+ tau_announce_request_finished( request );
}
static void
-on_announce_response( tr_session * session,
- struct tau_announce_request * request,
+on_announce_response( struct tau_announce_request * request,
tau_action_t action,
struct evbuffer * buf )
{
evbuffer_get_length( buf ),
NULL, 0,
&request->response.pex_count );
- tau_announce_request_finished( session, request );
+ tau_announce_request_finished( request );
}
else
{
else
errmsg = tr_strdup( _( "Unknown error" ) );
- tau_announce_request_fail( session, request, true, false, errmsg );
+ tau_announce_request_fail( request, true, false, errmsg );
tr_free( errmsg );
}
}
/* fail all the scrapes */
reqs = &tracker->scrapes;
for( i=0, n=tr_ptrArraySize(reqs); i<n; ++i )
- tau_scrape_request_fail( tracker->session, tr_ptrArrayNth( reqs, i ),
+ tau_scrape_request_fail( tr_ptrArrayNth( reqs, i ),
did_connect, did_timeout, errmsg );
tr_ptrArrayDestruct( reqs, (PtrArrayForeachFunc)tau_scrape_request_free );
*reqs = TR_PTR_ARRAY_INIT;
/* fail all the announces */
reqs = &tracker->announces;
for( i=0, n=tr_ptrArraySize(reqs); i<n; ++i )
- tau_announce_request_fail( tracker->session, tr_ptrArrayNth( reqs, i ),
+ tau_announce_request_fail( tr_ptrArrayNth( reqs, i ),
did_connect, did_timeout, errmsg );
tr_ptrArrayDestruct( reqs, (PtrArrayForeachFunc)tau_announce_request_free );
*reqs = TR_PTR_ARRAY_INIT;
struct tau_announce_request * req = tr_ptrArrayNth( reqs, i );
if( cancel_all || ( req->created_at + TAU_REQUEST_TTL < now ) ) {
dbgmsg( tracker->key, "timeout announce req %p", req );
- tau_announce_request_fail( tracker->session, req, false, true, NULL );
+ tau_announce_request_fail( req, false, true, NULL );
tau_announce_request_free( req );
tr_ptrArrayRemove( reqs, i );
--i;
struct tau_scrape_request * req = tr_ptrArrayNth( reqs, i );
if( cancel_all || ( req->created_at + TAU_REQUEST_TTL < now ) ) {
dbgmsg( tracker->key, "timeout scrape req %p", req );
- tau_scrape_request_fail( tracker->session, req, false, true, NULL );
+ tau_scrape_request_fail( req, false, true, NULL );
tau_scrape_request_free( req );
tr_ptrArrayRemove( reqs, i );
--i;
if( req->sent_at && ( transaction_id == req->transaction_id ) ) {
dbgmsg( tracker->key, "%"PRIu32" is an announce request!", transaction_id );
tr_ptrArrayRemove( reqs, j );
- on_announce_response( session, req, action_id, buf );
+ on_announce_response( req, action_id, buf );
tau_announce_request_free( req );
evbuffer_free( buf );
return true;
if( req->sent_at && ( transaction_id == req->transaction_id ) ) {
dbgmsg( tracker->key, "%"PRIu32" is a scrape request!", transaction_id );
tr_ptrArrayRemove( reqs, j );
- on_scrape_response( session, req, action_id, buf );
+ on_scrape_response( req, action_id, buf );
tau_scrape_request_free( req );
evbuffer_free( buf );
return true;
int tierId;
time_t timeSent;
tr_announce_event event;
+ tr_session * session;
/** If the request succeeds, the value for tier's "isRunning" flag */
bool isRunningOnSuccess;
}
static void
-on_announce_done( tr_session * session,
- const tr_announce_response * response,
+on_announce_done( const tr_announce_response * response,
void * vdata )
{
- tr_announcer * announcer = session->announcer;
+
struct announce_data * data = vdata;
+ tr_announcer * announcer = data->session->announcer;
tr_tier * tier = getTier( announcer, response->info_hash, data->tierId );
const time_t now = tr_time( );
const tr_announce_event event = data->event;
req = announce_request_new( announcer, tor, tier, announce_event );
data = tr_new0( struct announce_data, 1 );
+ data->session = announcer->session;
data->tierId = tier->key;
data->isRunningOnSuccess = tor->isRunning;
data->timeSent = now;
}
static void
-on_scrape_done( tr_session * session,
- const tr_scrape_response * response,
- void * user_data UNUSED )
+on_scrape_done( const tr_scrape_response * response,
+ void * vsession )
{
int i;
const time_t now = tr_time( );
+ tr_session * session = vsession;
tr_announcer * announcer = session->announcer;
for( i=0; i<response->row_count; ++i )
/* send the requests we just built */
for( i=0; i<request_count; ++i )
- scrape_request_delegate( announcer, &requests[i], on_scrape_done, NULL );
+ scrape_request_delegate( announcer, &requests[i], on_scrape_done, announcer->session );
/* cleanup */
tr_free( requests );