mirror of
https://github.com/transmission/transmission
synced 2024-12-25 09:13:06 +00:00
(trunk libT) peer-io.c: remove dead code and get rid of a couple of GOTOs
This commit is contained in:
parent
acdd8c860c
commit
1310fea91e
1 changed files with 48 additions and 67 deletions
|
@ -95,20 +95,18 @@ struct tr_peerIo
|
|||
tr_session * session;
|
||||
|
||||
tr_address addr;
|
||||
tr_list * output_datatypes; /* struct tr_datatype */
|
||||
|
||||
tr_can_read_cb canRead;
|
||||
tr_did_write_cb didWrite;
|
||||
tr_net_error_cb gotError;
|
||||
void * userData;
|
||||
|
||||
size_t bufferSize[2];
|
||||
|
||||
tr_bandwidth * bandwidth;
|
||||
tr_crypto * crypto;
|
||||
|
||||
struct evbuffer * inbuf;
|
||||
struct evbuffer * outbuf;
|
||||
tr_list * outbuf_datatypes; /* struct tr_datatype */
|
||||
|
||||
struct event event_read;
|
||||
struct event event_write;
|
||||
|
@ -123,7 +121,7 @@ didWriteWrapper( tr_peerIo * io, size_t bytes_transferred )
|
|||
{
|
||||
while( bytes_transferred )
|
||||
{
|
||||
struct tr_datatype * next = io->output_datatypes->data;
|
||||
struct tr_datatype * next = io->outbuf_datatypes->data;
|
||||
const size_t payload = MIN( next->length, bytes_transferred );
|
||||
const size_t overhead = getPacketOverhead( payload );
|
||||
|
||||
|
@ -138,7 +136,7 @@ didWriteWrapper( tr_peerIo * io, size_t bytes_transferred )
|
|||
bytes_transferred -= payload;
|
||||
next->length -= payload;
|
||||
if( !next->length )
|
||||
tr_free( tr_list_pop_front( &io->output_datatypes ) );
|
||||
tr_free( tr_list_pop_front( &io->outbuf_datatypes ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -211,7 +209,6 @@ static void
|
|||
event_read_cb( int fd, short event UNUSED, void * vio )
|
||||
{
|
||||
int res;
|
||||
short what = EVBUFFER_READ;
|
||||
tr_peerIo * io = vio;
|
||||
const size_t howmuch = tr_bandwidthClamp( io->bandwidth, TR_DOWN, io->session->so_rcvbuf );
|
||||
const tr_direction dir = TR_DOWN;
|
||||
|
@ -227,34 +224,32 @@ event_read_cb( int fd, short event UNUSED, void * vio )
|
|||
}
|
||||
|
||||
res = evbuffer_read( io->inbuf, fd, howmuch );
|
||||
if( res == -1 ) {
|
||||
if( errno == EAGAIN || errno == EINTR )
|
||||
goto reschedule;
|
||||
/* error case */
|
||||
what |= EVBUFFER_ERROR;
|
||||
} else if( res == 0 ) {
|
||||
/* eof case */
|
||||
what |= EVBUFFER_EOF;
|
||||
}
|
||||
|
||||
if( res <= 0 )
|
||||
goto error;
|
||||
|
||||
if( res > 0 )
|
||||
{
|
||||
tr_peerIoSetEnabled( io, dir, TRUE );
|
||||
|
||||
/* Invoke the user callback - must always be called last */
|
||||
canReadWrapper( io );
|
||||
}
|
||||
else
|
||||
{
|
||||
short what = EVBUFFER_READ;
|
||||
|
||||
return;
|
||||
|
||||
reschedule:
|
||||
if( res == 0 ) /* EOF */
|
||||
what |= EVBUFFER_EOF;
|
||||
else if( res == -1 ) {
|
||||
if( errno == EAGAIN || errno == EINTR ) {
|
||||
tr_peerIoSetEnabled( io, dir, TRUE );
|
||||
return;
|
||||
}
|
||||
what |= EVBUFFER_ERROR;
|
||||
}
|
||||
|
||||
error:
|
||||
if( io->gotError != NULL )
|
||||
io->gotError( io, what, io->userData );
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
tr_evbuffer_write( tr_peerIo * io, int fd, size_t howmuch )
|
||||
|
@ -341,13 +336,6 @@ event_write_cb( int fd, short event UNUSED, void * vio )
|
|||
***
|
||||
**/
|
||||
|
||||
|
||||
static int
|
||||
isFlag( int flag )
|
||||
{
|
||||
return( ( flag == 0 ) || ( flag == 1 ) );
|
||||
}
|
||||
|
||||
static tr_peerIo*
|
||||
tr_peerIoNew( tr_session * session,
|
||||
const tr_address * addr,
|
||||
|
@ -374,9 +362,6 @@ tr_peerIoNew( tr_session * session,
|
|||
io->outbuf = evbuffer_new( );
|
||||
event_set( &io->event_read, io->socket, EV_READ, event_read_cb, io );
|
||||
event_set( &io->event_write, io->socket, EV_WRITE, event_write_cb, io );
|
||||
#if 0
|
||||
bufevNew( io );
|
||||
#endif
|
||||
tr_peerIoSetBandwidth( io, session->bandwidth );
|
||||
return io;
|
||||
}
|
||||
|
@ -388,7 +373,7 @@ tr_peerIoNewIncoming( tr_session * session,
|
|||
int socket )
|
||||
{
|
||||
assert( session );
|
||||
assert( addr );
|
||||
assert( tr_isAddress( addr ) );
|
||||
assert( socket >= 0 );
|
||||
|
||||
return tr_peerIoNew( session, addr, port, NULL, 1, socket );
|
||||
|
@ -403,7 +388,7 @@ tr_peerIoNewOutgoing( tr_session * session,
|
|||
int socket;
|
||||
|
||||
assert( session );
|
||||
assert( addr );
|
||||
assert( tr_isAddress( addr ) );
|
||||
assert( torrentHash );
|
||||
|
||||
socket = tr_netOpenTCP( session, addr, port );
|
||||
|
@ -425,7 +410,7 @@ io_dtor( void * vio )
|
|||
evbuffer_free( io->inbuf );
|
||||
tr_netClose( io->socket );
|
||||
tr_cryptoFree( io->crypto );
|
||||
tr_list_free( &io->output_datatypes, tr_free );
|
||||
tr_list_free( &io->outbuf_datatypes, tr_free );
|
||||
|
||||
io->magicNumber = 0xDEAD;
|
||||
tr_free( io );
|
||||
|
@ -515,12 +500,7 @@ tr_peerIoReconnect( tr_peerIo * io )
|
|||
{
|
||||
tr_bandwidth * bandwidth = io->bandwidth;
|
||||
tr_peerIoSetBandwidth( io, NULL );
|
||||
|
||||
tr_netSetTOS( io->socket, io->session->peerSocketTOS );
|
||||
#if 0
|
||||
bufevNew( io );
|
||||
#endif
|
||||
|
||||
tr_peerIoSetBandwidth( io, bandwidth );
|
||||
return 0;
|
||||
}
|
||||
|
@ -593,9 +573,9 @@ tr_peerIoEnableFEXT( tr_peerIo * io,
|
|||
tr_bool flag )
|
||||
{
|
||||
assert( tr_isPeerIo( io ) );
|
||||
assert( isFlag( flag ) );
|
||||
assert( _isBool( flag ) );
|
||||
|
||||
dbgmsg( io, "setting FEXT support flag to %d", (flag?1:0) );
|
||||
dbgmsg( io, "setting FEXT support flag to %d", (flag!=0) );
|
||||
io->fastExtensionSupported = flag;
|
||||
}
|
||||
|
||||
|
@ -616,9 +596,9 @@ tr_peerIoEnableLTEP( tr_peerIo * io,
|
|||
tr_bool flag )
|
||||
{
|
||||
assert( tr_isPeerIo( io ) );
|
||||
assert( isFlag( flag ) );
|
||||
assert( _isBool( flag ) );
|
||||
|
||||
dbgmsg( io, "setting LTEP support flag to %d", (flag?1:0) );
|
||||
dbgmsg( io, "setting LTEP support flag to %d", (flag!=0) );
|
||||
io->extendedProtocolSupported = flag;
|
||||
}
|
||||
|
||||
|
@ -714,13 +694,14 @@ tr_peerIoWrite( tr_peerIo * io,
|
|||
int isPieceData )
|
||||
{
|
||||
struct tr_datatype * datatype;
|
||||
|
||||
assert( tr_amInEventThread( io->session ) );
|
||||
dbgmsg( io, "adding %zu bytes into io->output", writemeLen );
|
||||
|
||||
datatype = tr_new( struct tr_datatype, 1 );
|
||||
datatype->isPieceData = isPieceData != 0;
|
||||
datatype->length = writemeLen;
|
||||
tr_list_append( &io->output_datatypes, datatype );
|
||||
tr_list_append( &io->outbuf_datatypes, datatype );
|
||||
|
||||
evbuffer_add( io->outbuf, writeme, writemeLen );
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue