diff --git a/libtransmission/peer-io.c b/libtransmission/peer-io.c index 89caf8574..c97b1939f 100644 --- a/libtransmission/peer-io.c +++ b/libtransmission/peer-io.c @@ -268,11 +268,9 @@ tr_evbuffer_write( tr_peerIo * io, int fd, size_t howmuch ) evbuffer_drain( buffer, n ); /* keep the iobuf's excess capacity from growing too large */ - if( buffer->totallen > ( EVBUFFER_LENGTH( buffer ) + 4096 ) ) { - struct evbuffer * swap = evbuffer_new( ); - evbuffer_add( swap, EVBUFFER_DATA( buffer ), EVBUFFER_LENGTH( buffer ) ); - evbuffer_free( buffer ); - io->outbuf = swap; + if( EVBUFFER_LENGTH( io->outbuf ) == 0 ) { + evbuffer_free( io->outbuf ); + io->outbuf = evbuffer_new( ); } return n;