From d6ed808f9c517dc0f9493685b985cd9cb8e2aa3c Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Wed, 1 Jul 2009 00:46:30 +0000 Subject: [PATCH] (trunk, libT) #2253: I love you, valgrind pt 3 --- libtransmission/peer-io.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libtransmission/peer-io.c b/libtransmission/peer-io.c index 986a8d004..8ccbf953c 100644 --- a/libtransmission/peer-io.c +++ b/libtransmission/peer-io.c @@ -267,6 +267,14 @@ tr_evbuffer_write( tr_peerIo * io, int fd, size_t howmuch ) if( n > 0 ) evbuffer_drain( buffer, n ); + /* keep the iobuf's excess capacity from growing too large */ + if( buffer->totallen > ( EVBUFFER_LENGTH( buffer ) + 1024 ) ) { + struct evbuffer * swap = evbuffer_new( ); + evbuffer_add( swap, EVBUFFER_DATA( buffer ), EVBUFFER_LENGTH( buffer ) ); + evbuffer_free( buffer ); + io->outbuf = swap; + } + return n; }