Changeset 9434
- Timestamp:
- Oct 29, 2009, 4:10:03 PM (13 years ago)
- Location:
- trunk/libtransmission
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-common.h
r8903 r9434 49 49 TR_PEER_CLIENT_GOT_ALLOWED_FAST, 50 50 TR_PEER_CLIENT_GOT_SUGGEST, 51 TR_PEER_CLIENT_GOT_PORT, 51 52 TR_PEER_PEER_GOT_DATA, 52 53 TR_PEER_PEER_PROGRESS, … … 68 69 tr_bool wasPieceData; /* for GOT_DATA */ 69 70 tr_bool uploadOnly; /* for UPLOAD_ONLY */ 71 tr_port port; /* for GOT_PORT */ 70 72 } 71 73 tr_peer_event; -
trunk/libtransmission/peer-mgr.c
r9416 r9434 131 131 } 132 132 133 static const char* 134 tr_atomAddrStr( const struct peer_atom * atom ) 135 { 136 return tr_peerIoAddrStr( &atom->addr, atom->port ); 137 } 138 133 139 struct tr_blockIterator 134 140 { … … 261 267 **/ 262 268 269 const tr_address * 270 tr_peerAddress( const tr_peer * peer ) 271 { 272 return &peer->atom->addr; 273 } 274 263 275 static Torrent* 264 276 getExistingTorrent( tr_peerMgr * manager, … … 271 283 272 284 static int 273 peerCompare( const void * va, const void * vb ) 274 { 275 const tr_peer * a = va; 276 const tr_peer * b = vb; 277 278 return tr_compareAddresses( &a->addr, &b->addr ); 285 peerCompare( const void * a, const void * b ) 286 { 287 return tr_compareAddresses( tr_peerAddress( a ), tr_peerAddress( b ) ); 279 288 } 280 289 281 290 static int 282 peerCompareToAddr( const void * va, const void * vb ) 283 { 284 const tr_peer * a = va; 285 286 return tr_compareAddresses( &a->addr, vb ); 291 peerCompareToAddr( const void * a, const void * vb ) 292 { 293 return tr_compareAddresses( tr_peerAddress( a ), vb ); 287 294 } 288 295 … … 320 327 321 328 static tr_peer* 322 peerConstructor( const tr_address * addr ) 323 { 324 tr_peer * p; 325 p = tr_new0( tr_peer, 1 ); 326 p->addr = *addr; 327 return p; 329 peerConstructor( struct peer_atom * atom ) 330 { 331 tr_peer * peer = tr_new0( tr_peer, 1 ); 332 peer->atom = atom; 333 return peer; 328 334 } 329 335 330 336 static tr_peer* 331 getPeer( Torrent * torrent, 332 const tr_address * addr ) 337 getPeer( Torrent * torrent, struct peer_atom * atom ) 333 338 { 334 339 tr_peer * peer; … … 336 341 assert( torrentIsLocked( torrent ) ); 337 342 338 peer = getExistingPeer( torrent, addr );343 peer = getExistingPeer( torrent, &atom->addr ); 339 344 340 345 if( peer == NULL ) 341 346 { 342 peer = peerConstructor( a ddr);347 peer = peerConstructor( atom ); 343 348 tr_ptrArrayInsertSorted( &torrent->peers, peer, peerCompare ); 344 349 } … … 929 934 { 930 935 tordbg( t, "increasing peer %s strike count to %d", 931 tr_peerIoAddrStr( &peer->addr, 932 peer->port ), peer->strikes + 1 ); 936 tr_atomAddrStr( peer->atom ), peer->strikes + 1 ); 933 937 934 938 if( ++peer->strikes >= MAX_BAD_PIECES_PER_PEER ) … … 937 941 atom->myflags |= MYFLAG_BANNED; 938 942 peer->doPurge = 1; 939 tordbg( t, "banning peer %s", tr_ peerIoAddrStr( &atom->addr, atom->port) );943 tordbg( t, "banning peer %s", tr_atomAddrStr( atom ) ); 940 944 } 941 945 } … … 1064 1068 } 1065 1069 1070 case TR_PEER_CLIENT_GOT_PORT: 1071 if( peer ) 1072 peer->atom->port = e->port; 1073 break; 1074 1066 1075 case TR_PEER_CLIENT_GOT_SUGGEST: 1067 1076 if( peer ) … … 1109 1118 struct peer_atom * atom = peer->atom; 1110 1119 if( e->progress >= 1.0 ) { 1111 tordbg( t, "marking peer %s as a seed", tr_peerIoAddrStr( &atom->addr, atom->port ) ); 1120 tordbg( t, "marking peer %s as a seed", 1121 tr_atomAddrStr( atom ) ); 1112 1122 atom->flags |= ADDED_F_SEED_FLAG; 1113 1123 } … … 1176 1186 peer->doPurge = 1; 1177 1187 tordbg( t, "setting %s doPurge flag because we got an ERANGE, EMSGSIZE, or ENOTCONN error", 1178 tr_ peerIoAddrStr( &peer->addr, peer->port) );1188 tr_atomAddrStr( peer->atom ) ); 1179 1189 } 1180 1190 else … … 1209 1219 a->flags = flags; 1210 1220 a->from = from; 1211 tordbg( t, "got a new atom: %s", tr_ peerIoAddrStr( &a->addr, a->port) );1221 tordbg( t, "got a new atom: %s", tr_atomAddrStr( a ) ); 1212 1222 tr_ptrArrayInsertSorted( &t->pool, a, comparePeerAtoms ); 1213 1223 } … … 1286 1296 { 1287 1297 tordbg( t, "banned peer %s tried to reconnect", 1288 tr_ peerIoAddrStr( &atom->addr, atom->port) );1298 tr_atomAddrStr( atom ) ); 1289 1299 } 1290 1300 else if( tr_peerIoIsIncoming( io ) … … 1302 1312 else 1303 1313 { 1304 peer = getPeer( t, a ddr);1314 peer = getPeer( t, atom ); 1305 1315 tr_free( peer->client ); 1306 1316 … … 1313 1323 } 1314 1324 1315 peer->port = port;1316 peer->atom = atom;1317 1325 peer->io = tr_handshakeStealIO( handshake ); /* this steals its refcount too, which is 1318 1326 balanced by our unref in peerDestructor() */ … … 1494 1502 { 1495 1503 tordbg( t, "peer %s contributed to corrupt piece (%d); now has %d strikes", 1496 tr_ peerIoAddrStr( &peer->addr, peer->port),1504 tr_atomAddrStr( peer->atom ), 1497 1505 pieceIndex, (int)peer->strikes + 1 ); 1498 1506 addStrike( t, peer ); … … 1892 1900 tr_peer_stat * stat = ret + i; 1893 1901 1894 tr_ntop( & peer->addr, stat->addr, sizeof( stat->addr ) );1902 tr_ntop( &atom->addr, stat->addr, sizeof( stat->addr ) ); 1895 1903 tr_strlcpy( stat->client, ( peer->client ? peer->client : "" ), 1896 1904 sizeof( stat->client ) ); 1897 stat->port = ntohs( peer-> port );1905 stat->port = ntohs( peer->atom->port ); 1898 1906 stat->from = atom->from; 1899 1907 stat->progress = peer->progress; … … 2119 2127 { 2120 2128 tordbg( t, "purging peer %s because its doPurge flag is set", 2121 tr_ peerIoAddrStr( &atom->addr, atom->port) );2129 tr_atomAddrStr( atom ) ); 2122 2130 return TR_MUST_CLOSE; 2123 2131 } … … 2142 2150 { 2143 2151 tordbg( t, "purging peer %s because we're both seeds", 2144 tr_ peerIoAddrStr( &atom->addr, atom->port) );2152 tr_atomAddrStr( atom ) ); 2145 2153 return TR_MUST_CLOSE; 2146 2154 } … … 2163 2171 if( idleTime > limit ) { 2164 2172 tordbg( t, "purging peer %s because it's been %d secs since we shared anything", 2165 tr_ peerIoAddrStr( &atom->addr, atom->port), idleTime );2173 tr_atomAddrStr( atom ), idleTime ); 2166 2174 return TR_CAN_CLOSE; 2167 2175 } … … 2296 2304 { 2297 2305 tordbg( t, "RECONNECT peer %d (%s) is in its grace period of %d seconds..", 2298 i, tr_ peerIoAddrStr( &atom->addr, atom->port), interval );2306 i, tr_atomAddrStr( atom ), interval ); 2299 2307 continue; 2300 2308 } … … 2407 2415 2408 2416 tordbg( t, "Starting an OUTGOING connection with %s", 2409 tr_ peerIoAddrStr( &atom->addr, atom->port) );2417 tr_atomAddrStr( atom ) ); 2410 2418 2411 2419 io = tr_peerIoNewOutgoing( mgr->session, mgr->session->bandwidth, &atom->addr, atom->port, t->tor->info.hash ); … … 2414 2422 { 2415 2423 tordbg( t, "peerIo not created; marking peer %s as unreachable", 2416 tr_ peerIoAddrStr( &atom->addr, atom->port) );2424 tr_atomAddrStr( atom ) ); 2417 2425 atom->myflags |= MYFLAG_UNREACHABLE; 2418 2426 } -
trunk/libtransmission/peer-mgr.h
r9383 r9434 88 88 89 89 uint8_t encryption_preference; 90 tr_port port;91 90 tr_port dht_port; 92 tr_address addr;93 91 struct tr_peerIo * io; 94 92 struct peer_atom * atom; … … 110 108 tr_peer; 111 109 110 const tr_address * tr_peerAddress( const tr_peer * ); 112 111 113 112 int tr_pexCompare( const void * a, const void * b ); -
trunk/libtransmission/peer-msgs.c
r9383 r9434 413 413 **/ 414 414 415 static const tr_peer_event blankEvent = { 0, 0, 0, 0, 0.0f, 0, 0, 0 };415 static const tr_peer_event blankEvent = { 0, 0, 0, 0, 0.0f, 0, 0, 0, 0 }; 416 416 417 417 static void … … 489 489 e.eventType = TR_PEER_CLIENT_GOT_SUGGEST; 490 490 e.pieceIndex = pieceIndex; 491 publish( msgs, &e ); 492 } 493 494 static void 495 fireClientGotPort( tr_peermsgs * msgs, tr_port port ) 496 { 497 tr_peer_event e = blankEvent; 498 e.eventType = TR_PEER_CLIENT_GOT_PORT; 499 e.port = port; 491 500 publish( msgs, &e ); 492 501 } … … 1060 1069 /* get peer's listening port */ 1061 1070 if( tr_bencDictFindInt( &val, "p", &i ) ) { 1062 msgs->peer->port = htons( (uint16_t)i );1063 dbgmsg( msgs, " msgs->port is now %hu", msgs->peer->port);1071 fireClientGotPort( msgs, (tr_port)i ); 1072 dbgmsg( msgs, "peer's port is now %d", (int)i ); 1064 1073 } 1065 1074 … … 1456 1465 tr_peerIoReadUint16( msgs->peer->io, inbuf, &msgs->peer->dht_port ); 1457 1466 if( msgs->peer->dht_port > 0 ) 1458 tr_dhtAddNode( getSession(msgs), &msgs->peer->addr, msgs->peer->dht_port, 0 ); 1467 tr_dhtAddNode( getSession(msgs), 1468 tr_peerAddress( msgs->peer ), 1469 msgs->peer->dht_port, 0 ); 1459 1470 break; 1460 1471 -
trunk/libtransmission/tr-dht.c
r9417 r9434 53 53 #ifdef WITHOUT_DHT 54 54 55 /* These are the stubs for when we're building without DHT support */ 55 /** 56 *** These are the stubs for when we're building without DHT support 57 **/ 58 56 59 int tr_dhtInit( tr_session * session UNUSED, 57 60 tr_address * address UNUSED ) { return TR_DHT_STOPPED; } 61 58 62 void tr_dhtUninit( tr_session * session UNUSED ) { } 63 59 64 tr_bool tr_dhtEnabled( const tr_session * session UNUSED ) { return FALSE; } 65 60 66 tr_port tr_dhtPort ( const tr_session * sesssion UNUSED ) { return 0; } 67 61 68 int tr_dhtStatus( tr_session * session UNUSED, 62 69 int * setmeCount UNUSED ) { return TR_DHT_STOPPED; } 63 int tr_dhtAddNode( tr_session * session UNUSED, 64 tr_address * addr UNUSED, 65 tr_port port UNUSED, 66 tr_bool bootstrap UNUSED ) { return 0; } 70 71 int tr_dhtAddNode( tr_session * session UNUSED, 72 const tr_address * addr UNUSED, 73 tr_port port UNUSED, 74 tr_bool bootstrap UNUSED ) { return 0; } 75 67 76 int tr_dhtAnnounce( tr_torrent * session UNUSED, 68 77 tr_bool announce UNUSED ) { return -1; } … … 320 329 321 330 int 322 tr_dhtAddNode(tr_session *ss, tr_address *address, tr_port port, 323 tr_bool bootstrap) 331 tr_dhtAddNode( tr_session * ss, 332 const tr_address * address, 333 tr_port port, 334 tr_bool bootstrap ) 324 335 { 325 336 struct sockaddr_in sin; -
trunk/libtransmission/tr-dht.h
r9383 r9434 33 33 int tr_dhtStatus( tr_session *, int * setme_nodeCount ); 34 34 const char *tr_dhtPrintableStatus(int status); 35 int tr_dhtAddNode( tr_session *, tr_address *, tr_port, tr_bool bootstrap );35 int tr_dhtAddNode( tr_session *, const tr_address *, tr_port, tr_bool bootstrap ); 36 36 int tr_dhtAnnounce( tr_torrent *, tr_bool announce ); -
trunk/libtransmission/webseed.c
r8685 r9434 52 52 ***/ 53 53 54 static const tr_peer_event blankEvent = { 0, 0, 0, 0, 0.0f, 0, 0, 0 };54 static const tr_peer_event blankEvent = { 0, 0, 0, 0, 0.0f, 0, 0, 0, 0 }; 55 55 56 56 static void
Note: See TracChangeset
for help on using the changeset viewer.