Changeset 3155 for trunk/libtransmission/peer-msgs.c
- Timestamp:
- Sep 23, 2007, 11:38:39 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-msgs.c
r3148 r3155 608 608 609 609 static int 610 requestIsValid( const tr_peermsgs * msgs, struct peer_request * req ) 611 { 612 const tr_torrent * tor = msgs->torrent; 613 assert( req != NULL ); 614 assert( req->index < (uint32_t)tor->info.pieceCount ); 615 assert( (int)req->offset < tr_torPieceCountBytes( tor, (int)req->index ) ); 616 assert( tr_pieceOffset( tor, req->index, req->offset, req->length ) <= tor->info.totalSize ); 617 return TRUE; 618 } 619 620 static int 610 621 readBtMessage( tr_peermsgs * msgs, struct evbuffer * inbuf ) 611 622 { … … 683 694 tr_peerIoReadUint32( msgs->io, inbuf, &req->offset ); 684 695 tr_peerIoReadUint32( msgs->io, inbuf, &req->length ); 685 if( !msgs->info->peerIsChoked )696 if( !msgs->info->peerIsChoked && requestIsValid( msgs, req ) ) 686 697 tr_list_append( &msgs->peerAskedFor, req ); 698 else 699 tr_free( req ); 687 700 break; 688 701 } … … 690 703 case BT_CANCEL: { 691 704 struct peer_request req; 692 tr_list * node;705 void * data; 693 706 assert( msglen == 12 ); 694 707 dbgmsg( msgs, "peer sent us a BT_CANCEL" ); … … 696 709 tr_peerIoReadUint32( msgs->io, inbuf, &req.offset ); 697 710 tr_peerIoReadUint32( msgs->io, inbuf, &req.length ); 698 node = tr_list_find( msgs->peerAskedFor, &req, peer_request_compare ); 699 if( node != NULL ) { 700 void * data = node->data; 701 tr_list_remove_data( &msgs->peerAskedFor, data ); 702 tr_free( data ); 703 dbgmsg( msgs, "found the req that peer is cancelling... cancelled." ); 704 } 711 data = tr_list_remove( &msgs->peerAskedFor, &req, peer_request_compare ); 712 tr_free( data ); 705 713 break; 706 714 }
Note: See TracChangeset
for help on using the changeset viewer.