diff --git a/libtransmission/blocklist.c b/libtransmission/blocklist.c index 3f0db0a48..9892be322 100644 --- a/libtransmission/blocklist.c +++ b/libtransmission/blocklist.c @@ -39,6 +39,7 @@ static struct tr_ip_range * blocklist = NULL; static size_t blocklistItemCount = 0; static size_t blocklistByteCount = 0; static int blocklistFd = -1; +static int isEnabled = FALSE; void tr_getBlocklistFilename( char * buf, size_t buflen ) @@ -103,12 +104,27 @@ compareAddressToRange( const void * va, const void * vb ) return 0; } +int +tr_blocklistIsEnabled( const tr_handle * handle UNUSED ) +{ + return isEnabled; +} + +void +tr_blocklistSetEnabled( tr_handle * handle UNUSED, int flag ) +{ + isEnabled = flag ? 1 : 0; +} + int tr_peerIsBlocked( tr_handle * handle UNUSED, const struct in_addr * addr ) { uint32_t needle; const struct tr_ip_range * range; + if( !isEnabled ) + return FALSE; + if( !blocklist ) { loadBlocklist( ); if( !blocklist ) diff --git a/libtransmission/transmission.c b/libtransmission/transmission.c index c4db0c9b5..767ef0dea 100644 --- a/libtransmission/transmission.c +++ b/libtransmission/transmission.c @@ -124,7 +124,8 @@ tr_initFull( const char * tag, int downloadLimit, int globalPeerLimit, int messageLevel, - int isMessageQueueingEnabled ) + int isMessageQueueingEnabled, + int isBlocklistEnabled ) { tr_handle * h; char buf[128]; @@ -177,6 +178,8 @@ tr_initFull( const char * tag, TR_NAME, LONG_VERSION_STRING ); tr_inf( "%s", buf ); + tr_blocklistSetEnabled( h, isBlocklistEnabled ); + tr_statsInit( h ); return h; @@ -195,7 +198,8 @@ tr_handle * tr_init( const char * tag ) -1, /* download speed limit */ 200, /* globalPeerLimit */ TR_MSG_INF, /* message level */ - FALSE ); /* is message queueing enabled? */ + FALSE, /* is message queueing enabled? */ + FALSE ); /* is the blocklist enabled? */ } /*** diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h index 4de64edc7..881c63508 100644 --- a/libtransmission/transmission.h +++ b/libtransmission/transmission.h @@ -87,7 +87,8 @@ tr_handle * tr_initFull( const char * tag, int downloadLimit, int globalPeerLimit, int messageLevel, - int isMessageQueueingEnabled ); + int isMessageQueueingEnabled, + int isBlocklistEnabled ); /** * Like tr_initFull() but with default values supplied. @@ -311,6 +312,11 @@ void tr_blocklistSet( tr_handle * handle, int tr_blocklistExists( const tr_handle * handle ); +int tr_blocklistIsEnabled( const tr_handle * handle ); + +void tr_blocklistSetEnabled( tr_handle * handle, + int isEnabled ); + /***********************************************************************