From b8e6d5fbdcbbeea5841418b967d0784090869235 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 2 Dec 2008 22:25:51 +0000 Subject: [PATCH] (libT) #1398: don't accept incoming peer connections when all torrents are paused --- libtransmission/port-forwarding.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libtransmission/port-forwarding.c b/libtransmission/port-forwarding.c index 4cdf118f1..7c6dac8ea 100644 --- a/libtransmission/port-forwarding.c +++ b/libtransmission/port-forwarding.c @@ -103,6 +103,9 @@ natPulse( tr_shared * s ) static void incomingPeersPulse( tr_shared * s ) { + int allPaused; + tr_torrent * tor; + if( s->bindSocket >= 0 && ( s->bindPort != s->publicPort ) ) { tr_ninf( getKey( ), _( "Closing port %d" ), s->bindPort ); @@ -136,7 +139,18 @@ incomingPeersPulse( tr_shared * s ) } } - for( ; ; ) /* check for new incoming peer connections */ + /* see if any torrents aren't paused */ + allPaused = 1; + tor = NULL; + while(( tor = tr_torrentNext( s->session, tor ))) { + if( TR_STATUS_IS_ACTIVE( tr_torrentGetActivity( tor ))) { + allPaused = 0; + break; + } + } + + /* if we have any running torrents, check for new incoming peer connections */ + while( !allPaused ) { int socket; tr_port port;