Changeset 3416
- Timestamp:
- Oct 15, 2007, 4:01:42 PM (15 years ago)
- Location:
- trunk/libtransmission
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-mgr.c
r3411 r3416 140 140 struct evbuffer * buf = evbuffer_new( ); 141 141 char timestr[64]; 142 evbuffer_add_printf( buf, "[%s] %s: ",143 tr_getLogTimeStr( timestr, sizeof(timestr) ),144 142 evbuffer_add_printf( buf, "[%s] ", tr_getLogTimeStr( timestr, sizeof(timestr) ) ); 143 if( t != NULL ) 144 evbuffer_add_printf( buf, "%s ", t->tor->info.name ); 145 145 va_start( args, fmt ); 146 146 evbuffer_add_vprintf( buf, fmt, args ); … … 956 956 if( getExistingHandshake( manager->incomingHandshakes, addr ) == NULL ) 957 957 { 958 tr_peerIo * io = tr_peerIoNewIncoming( manager->handle, addr, port, socket ); 959 960 tr_handshake * handshake = tr_handshakeNew( io, 961 manager->handle->encryptionMode, 962 myHandshakeDoneCB, 963 manager ); 958 tr_peerIo * io; 959 tr_handshake * handshake; 960 961 tordbg( NULL, "Got an INCOMING connection with %s", tr_peerIoAddrStr( addr, port ) ); 962 963 io = tr_peerIoNewIncoming( manager->handle, addr, port, socket ); 964 965 handshake = tr_handshakeNew( io, 966 manager->handle->encryptionMode, 967 myHandshakeDoneCB, 968 manager ); 964 969 965 970 tr_ptrArrayInsertSorted( manager->incomingHandshakes, handshake, handshakeCompare ); … … 1430 1435 { 1431 1436 int i, peerCount, size=0, unchoked=0; 1432 const time_t ignorePeersNewerThan= time(NULL) - MIN_CHOKE_PERIOD_SEC;1437 const time_t fibrillationTime = time(NULL) - MIN_CHOKE_PERIOD_SEC; 1433 1438 tr_peer ** peers = getConnectedPeers( t, &peerCount ); 1434 1439 struct ChokeData * choke = tr_new0( struct ChokeData, peerCount ); … … 1441 1446 tr_peer * peer = peers[i]; 1442 1447 struct ChokeData * node; 1443 if( peer->chokeChangedAt > ignorePeersNewerThan)1448 if( peer->chokeChangedAt > fibrillationTime ) 1444 1449 continue; 1445 1450 … … 1566 1571 getPeerCandidates( Torrent * t, int * setmeSize ) 1567 1572 { 1568 int i, insize, outsize;1573 int i, atomCount, retCount; 1569 1574 struct peer_atom ** atoms; 1570 1575 struct peer_atom ** ret; … … 1574 1579 assert( torrentIsLocked( t ) ); 1575 1580 1576 atoms = (struct peer_atom**) tr_ptrArrayPeek( t->pool, & insize);1577 ret = tr_new( struct peer_atom*, insize);1578 for( i= outsize=0; i<insize; ++i )1581 atoms = (struct peer_atom**) tr_ptrArrayPeek( t->pool, &atomCount ); 1582 ret = tr_new( struct peer_atom*, atomCount ); 1583 for( i=retCount=0; i<atomCount; ++i ) 1579 1584 { 1580 1585 struct peer_atom * atom = atoms[i]; … … 1609 1614 } 1610 1615 1611 ret[ outsize++] = atom;1612 } 1613 1614 qsort( ret, outsize, sizeof(struct peer_atom*), compareAtomByTime );1615 *setmeSize = outsize;1616 ret[retCount++] = atom; 1617 } 1618 1619 qsort( ret, retCount, sizeof(struct peer_atom*), compareAtomByTime ); 1620 *setmeSize = retCount; 1616 1621 return ret; 1617 1622 } … … 1654 1659 struct peer_atom * atom = candidates[i]; 1655 1660 1656 tr_peerIo * io = tr_peerIoNewOutgoing( mgr->handle, &atom->addr, atom->port, t->hash ); 1661 tr_peerIo * io; 1662 1663 tordbg( t, "Starting an OUTGOING connection with %s", 1664 tr_peerIoAddrStr( &atom->addr, atom->port ) ); 1665 1666 io = tr_peerIoNewOutgoing( mgr->handle, &atom->addr, atom->port, t->hash ); 1657 1667 1658 1668 tr_handshake * handshake = tr_handshakeNew( io, -
trunk/libtransmission/peer-msgs.c
r3411 r3416 389 389 } 390 390 391 void 391 #define MIN_CHOKE_PERIOD_SEC 10 392 393 int 392 394 tr_peerMsgsSetChoke( tr_peermsgs * msgs, int choke ) 393 395 { 396 int ret; 397 const time_t fibrillationTime = time(NULL) - MIN_CHOKE_PERIOD_SEC; 398 394 399 assert( msgs != NULL ); 395 400 assert( msgs->info != NULL ); 396 401 assert( choke==0 || choke==1 ); 397 402 398 if( msgs->info->peerIsChoked != choke ) 403 if( msgs->info->chokeChangedAt > fibrillationTime ) 404 { 405 dbgmsg( msgs, "Not changing choke to %d to avoid fibrillation", choke ); 406 ret = FALSE; 407 } 408 else if( msgs->info->peerIsChoked != choke ) 399 409 { 400 410 msgs->info->peerIsChoked = choke; 401 tr_list * walk;402 411 403 412 if( choke ) 413 { 414 tr_list * walk; 404 415 for( walk = msgs->peerAskedFor; walk != NULL; ) 405 416 { … … 414 425 walk = next; 415 426 } 427 } 416 428 417 429 protocolSendChoke( msgs, choke ); 418 430 msgs->info->chokeChangedAt = time( NULL ); 419 } 431 ret = TRUE; 432 } 433 434 return ret; 420 435 } 421 436 … … 941 956 case BT_BITFIELD: { 942 957 const int clientIsSeed = tr_cpGetStatus( msgs->torrent->completion ) != TR_CP_INCOMPLETE; 958 dbgmsg( msgs, "got a bitfield" ); 943 959 assert( msglen == msgs->info->have->len ); 944 960 tr_peerIoReadBytes( msgs->io, inbuf, msgs->info->have->bits, msglen ); -
trunk/libtransmission/peer-msgs.h
r3349 r3416 30 30 31 31 32 voidtr_peerMsgsSetChoke( tr_peermsgs *, int doChoke );32 int tr_peerMsgsSetChoke( tr_peermsgs *, int doChoke ); 33 33 34 34 void tr_peerMsgsHave( tr_peermsgs * msgs,
Note: See TracChangeset
for help on using the changeset viewer.