Changeset 3859
- Timestamp:
- Nov 17, 2007, 5:49:30 PM (15 years ago)
- Location:
- trunk/libtransmission
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-io.c
r3846 r3859 51 51 int socket; 52 52 int encryptionMode; 53 int timeout; 53 54 struct bufferevent * bufev; 54 55 uint8_t peerId[20]; … … 131 132 c->socket = socket; 132 133 c->isIncoming = isIncoming ? 1 : 0; 134 c->timeout = IO_TIMEOUT_SECS; 133 135 c->bufev = bufferevent_new( c->socket, 134 136 canReadWrapper, … … 136 138 gotErrorWrapper, 137 139 c ); 138 bufferevent_settimeout( c->bufev, IO_TIMEOUT_SECS, IO_TIMEOUT_SECS);140 bufferevent_settimeout( c->bufev, c->timeout, c->timeout ); 139 141 bufferevent_enable( c->bufev, EV_READ|EV_WRITE ); 140 142 bufferevent_setwatermark( c->bufev, EV_READ, 0, TR_RDBUF ); … … 273 275 canReadWrapper, NULL, gotErrorWrapper, 274 276 io ); 275 bufferevent_settimeout( io->bufev, IO_TIMEOUT_SECS, IO_TIMEOUT_SECS);277 bufferevent_settimeout( io->bufev, io->timeout, io->timeout ); 276 278 bufferevent_enable( io->bufev, EV_READ|EV_WRITE ); 277 279 bufferevent_setwatermark( io->bufev, EV_READ, 0, TR_RDBUF ); … … 286 288 tr_peerIoSetTimeoutSecs( tr_peerIo * io, int secs ) 287 289 { 288 bufferevent_settimeout( io->bufev, secs, secs ); 290 io->timeout = secs; 291 bufferevent_settimeout( io->bufev, io->timeout, io->timeout ); 289 292 } 290 293 … … 434 437 return io!=NULL && io->encryptionMode==PEER_ENCRYPTION_RC4; 435 438 } 439 440 /** 441 *** 442 **/ 436 443 437 444 void … … 462 469 463 470 void 471 tr_peerIoWriteUint8( tr_peerIo * io, 472 struct evbuffer * outbuf, 473 uint8_t writeme ) 474 { 475 tr_peerIoWriteBytes( io, outbuf, &writeme, sizeof(uint8_t) ); 476 } 477 478 void 464 479 tr_peerIoWriteUint16( tr_peerIo * io, 465 480 struct evbuffer * outbuf, … … 471 486 472 487 void 473 tr_peerIoWriteUint8( tr_peerIo * io,474 struct evbuffer * outbuf,475 uint8_t writeme )476 {477 tr_peerIoWriteBytes( io, outbuf, &writeme, sizeof(uint8_t) );478 }479 480 void481 488 tr_peerIoWriteUint32( tr_peerIo * io, 482 489 struct evbuffer * outbuf, … … 486 493 tr_peerIoWriteBytes( io, outbuf, &tmp, sizeof(uint32_t) ); 487 494 } 495 496 /*** 497 **** 498 ***/ 488 499 489 500 void … … 512 523 513 524 void 525 tr_peerIoReadUint8( tr_peerIo * io, 526 struct evbuffer * inbuf, 527 uint8_t * setme ) 528 { 529 tr_peerIoReadBytes( io, inbuf, setme, sizeof(uint8_t) ); 530 } 531 532 void 514 533 tr_peerIoReadUint16( tr_peerIo * io, 515 534 struct evbuffer * inbuf, … … 522 541 523 542 void 524 tr_peerIoReadUint8( tr_peerIo * io,525 struct evbuffer * inbuf,526 uint8_t * setme )527 {528 tr_peerIoReadBytes( io, inbuf, setme, sizeof(uint8_t) );529 }530 531 void532 543 tr_peerIoReadUint32( tr_peerIo * io, 533 544 struct evbuffer * inbuf, -
trunk/libtransmission/peer-msgs.c
r3849 r3859 69 69 70 70 PEX_INTERVAL = (60 * 1000), /* msec between calls to sendPex() */ 71 PEER_PULSE_INTERVAL = ( 100), /* msec between calls to pulse() */71 PEER_PULSE_INTERVAL = (250), /* msec between calls to pulse() */ 72 72 RATE_PULSE_INTERVAL = (333), /* msec between calls to ratePulse() */ 73 73 … … 889 889 msgs->state = AWAITING_BT_ID; 890 890 } 891 dbgmsg( msgs, "readBtLength: got a length of %d, msgs->state is now %d", (int)len, (int)msgs->state );892 891 893 892 return READ_AGAIN; … … 1086 1085 const size_t startBufLen = EVBUFFER_LENGTH( inbuf ); 1087 1086 1088 dbgmsg( msgs, "in readBtMessage" );1089 1090 1087 --msglen; // id length 1091 1088 1092 if( inlen < msglen ) { 1093 dbgmsg( msgs, " too short!!! " ); 1089 if( inlen < msglen ) 1094 1090 return READ_MORE; 1095 }1096 1091 1097 1092 dbgmsg( msgs, "got BT id %d, len %d, buffer size is %d", (int)id, (int)msglen, (int)inlen ); … … 1231 1226 } 1232 1227 1233 dbgmsg( msgs, "startBufLen was %d, msglen was %d, current inbuf len is %d", (int)startBufLen, (int)(msglen+1), (int)EVBUFFER_LENGTH(inbuf) );1234 1235 1228 assert( msglen + 1 == msgs->incoming.length ); 1236 1229 assert( EVBUFFER_LENGTH(inbuf) == startBufLen - msglen ); … … 1299 1292 gotBadPiece( tr_peermsgs * msgs, uint32_t pieceIndex ) 1300 1293 { 1301 const uint32_t byteCount = tr_torPieceCountBytes( msgs->torrent, (int)pieceIndex ); 1294 const uint32_t byteCount = 1295 tr_torPieceCountBytes( msgs->torrent, (int)pieceIndex ); 1302 1296 reassignBytesToCorrupt( msgs, byteCount ); 1303 1297 } … … 1318 1312 1319 1313 static int 1320 clientGotBlock( tr_peermsgs * msgs, const uint8_t * data, const struct peer_request * req ) 1314 clientGotBlock( tr_peermsgs * msgs, 1315 const uint8_t * data, 1316 const struct peer_request * req ) 1321 1317 { 1322 1318 int i; … … 1409 1405 struct evbuffer * inbuf = EVBUFFER_INPUT ( evin ); 1410 1406 const size_t buflen = EVBUFFER_LENGTH( inbuf ); 1411 const size_t inlen = MIN( buflen, getDownloadMax( msgs ) );1412 1413 if( ! inlen )1407 const size_t n = MIN( buflen, getDownloadMax( msgs ) ); 1408 1409 if( !n ) 1414 1410 { 1415 1411 ret = READ_DONE; … … 1417 1413 else switch( msgs->state ) 1418 1414 { 1419 case AWAITING_BT_LENGTH: ret = readBtLength ( msgs, inbuf, inlen ); break;1420 case AWAITING_BT_ID: ret = readBtId ( msgs, inbuf, inlen ); break;1421 case AWAITING_BT_MESSAGE: ret = readBtMessage( msgs, inbuf, inlen ); break;1422 case AWAITING_BT_PIECE: ret = readBtPiece ( msgs, inbuf, inlen ); break;1415 case AWAITING_BT_LENGTH: ret = readBtLength ( msgs, inbuf, n ); break; 1416 case AWAITING_BT_ID: ret = readBtId ( msgs, inbuf, n ); break; 1417 case AWAITING_BT_MESSAGE: ret = readBtMessage( msgs, inbuf, n ); break; 1418 case AWAITING_BT_PIECE: ret = readBtPiece ( msgs, inbuf, n ); break; 1423 1419 default: assert( 0 ); 1424 1420 } … … 1442 1438 { 1443 1439 /* don't let our outbuffer get too large */ 1444 if( tr_peerIoWriteBytesWaiting( msgs->io ) > 4096 ) 1445 return FALSE; 1446 1447 return TRUE; 1440 return tr_peerIoWriteBytesWaiting( msgs->io ) < 4096; 1448 1441 } 1449 1442 … … 1557 1550 gotError( struct bufferevent * evbuf UNUSED, short what, void * vmsgs ) 1558 1551 { 1559 dbgmsg( vmsgs, "libevent got an error! what=%d, errno=%d (%s)", 1560 (int)what, errno, strerror(errno) ); 1561 fireGotError( vmsgs ); 1552 if( what & EVBUFFER_TIMEOUT ) 1553 dbgmsg( vmsgs, "libevent got a timeout, what=%hd", what ); 1554 1555 if( what & ( EVBUFFER_EOF | EVBUFFER_ERROR ) ) { 1556 dbgmsg( vmsgs, "libevent got an error! what=%hd, errno=%d (%s)", 1557 what, errno, strerror(errno) ); 1558 fireGotError( vmsgs ); 1559 } 1562 1560 } 1563 1561
Note: See TracChangeset
for help on using the changeset viewer.