From c414377c1ac80f86c23b6a5a9cc80365081c92d8 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 2 Dec 2008 19:06:08 +0000 Subject: [PATCH] (libT) fix r7234 bug reported by John_Clay --- libtransmission/peer-mgr.c | 6 +++--- libtransmission/peer-msgs.c | 18 +++++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/libtransmission/peer-mgr.c b/libtransmission/peer-mgr.c index 3b4099223..a452736d1 100644 --- a/libtransmission/peer-mgr.c +++ b/libtransmission/peer-mgr.c @@ -972,8 +972,8 @@ peerCallbackFunc( void * vpeer, void * vevent, void * vt ) { - tr_peer * peer = vpeer; /* may be NULL if peer is a webseed */ - Torrent * t = (Torrent *) vt; + tr_peer * peer = vpeer; /* may be NULL if peer is a webseed */ + Torrent * t = vt; const tr_peer_event * e = vevent; torrentLock( t ); @@ -1276,7 +1276,7 @@ myHandshakeDoneCB( tr_handshake * handshake, peer->port = port; peer->io = io; - peer->msgs = tr_peerMsgsNew( t->tor, peer, peerCallbackFunc, t, &peer->msgsTag ); + tr_peerMsgsNew( t->tor, peer, peerCallbackFunc, t, &peer->msgsTag ); tr_peerIoSetBandwidth( io, peer->bandwidth ); success = TRUE; diff --git a/libtransmission/peer-msgs.c b/libtransmission/peer-msgs.c index 850299bda..ab53b76fa 100644 --- a/libtransmission/peer-msgs.c +++ b/libtransmission/peer-msgs.c @@ -519,6 +519,9 @@ static void publish( tr_peermsgs * msgs, tr_peer_event * e ) { + assert( msgs->info ); + assert( msgs->info->msgs == msgs ); + tr_publisherPublish( msgs->publisher, msgs->info, e ); } @@ -2128,22 +2131,22 @@ pexPulse( void * vpeer ) tr_peermsgs* tr_peerMsgsNew( struct tr_torrent * torrent, - struct tr_peer * info, + struct tr_peer * peer, tr_delivery_func func, void * userData, tr_publisher_tag * setme ) { tr_peermsgs * m; - assert( info ); - assert( info->io ); + assert( peer ); + assert( peer->io ); m = tr_new0( tr_peermsgs, 1 ); m->publisher = tr_publisherNew( ); - m->info = info; + m->info = peer; m->session = torrent->session; m->torrent = torrent; - m->io = info->io; + m->io = peer->io; m->info->clientIsChoked = 1; m->info->peerIsChoked = 1; m->info->clientIsInterested = 0; @@ -2159,6 +2162,8 @@ tr_peerMsgsNew( struct tr_torrent * torrent, m->peerAskedFor = REQUEST_LIST_INIT; m->clientAskedFor = REQUEST_LIST_INIT; m->clientWillAskFor = REQUEST_LIST_INIT; + peer->msgs = m; + *setme = tr_publisherSubscribe( m->publisher, func, userData ); if( tr_peerIoSupportsLTEP( m->io ) ) @@ -2166,8 +2171,7 @@ tr_peerMsgsNew( struct tr_torrent * torrent, tellPeerWhatWeHave( m ); - tr_peerIoSetTimeoutSecs( m->io, 150 ); /* timeout after N seconds of - inactivity */ + tr_peerIoSetTimeoutSecs( m->io, 150 ); /* timeout after N seconds of inactivity */ tr_peerIoSetIOFuncs( m->io, canRead, didWrite, gotError, m ); ratePulse( m ); -- 2.40.0