From db58b89f6e107927281331fabeb45c1348fbd92f Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 13 Jan 2009 16:35:06 +0000 Subject: [PATCH] (trunk libT) Clean up RPC server initialization (wereHamster) --- libtransmission/rpc-server.c | 58 +++++++++++++++++++++++------------- libtransmission/rpc-server.h | 8 +---- libtransmission/session.c | 13 +------- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/libtransmission/rpc-server.c b/libtransmission/rpc-server.c index 0717a238d..2de48e636 100644 --- a/libtransmission/rpc-server.c +++ b/libtransmission/rpc-server.c @@ -708,25 +708,43 @@ tr_rpcClose( tr_rpc_server ** ps ) tr_rpc_server * tr_rpcInit( tr_session * session, - tr_bool isEnabled, - tr_port port, - tr_bool isWhitelistEnabled, - const char * whitelist, - tr_bool isPasswordEnabled, - const char * username, - const char * password ) + tr_benc * settings ) { tr_rpc_server * s; + tr_bool found; + int64_t i; + const char *str; s = tr_new0( tr_rpc_server, 1 ); s->session = session; - s->port = port; - s->username = tr_strdup( username ); - s->password = tr_strdup( password ); - s->isWhitelistEnabled = isWhitelistEnabled; - s->isPasswordEnabled = isPasswordEnabled; - s->isEnabled = isEnabled != 0; - tr_rpcSetWhitelist( s, whitelist ? whitelist : "127.0.0.1" ); + + found = tr_bencDictFindInt( settings, TR_PREFS_KEY_RPC_ENABLED, &i ); + assert( found ); + s->isEnabled = i != 0; + + found = tr_bencDictFindInt( settings, TR_PREFS_KEY_RPC_PORT, &i ); + assert( found ); + s->port = i; + + found = tr_bencDictFindInt( settings, TR_PREFS_KEY_RPC_WHITELIST_ENABLED, &i ); + assert( found ); + s->isWhitelistEnabled = i != 0; + + found = tr_bencDictFindInt( settings, TR_PREFS_KEY_RPC_AUTH_REQUIRED, &i ); + assert( found ); + s->isPasswordEnabled = i != 0; + + found = tr_bencDictFindStr( settings, TR_PREFS_KEY_RPC_WHITELIST, &str ); + assert( found ); + tr_rpcSetWhitelist( s, str ? str : "127.0.0.1" ); + + found = tr_bencDictFindStr( settings, TR_PREFS_KEY_RPC_USERNAME, &str ); + assert( found ); + s->username = tr_strdup( str ); + + found = tr_bencDictFindStr( settings, TR_PREFS_KEY_RPC_PASSWORD, &str ); + assert( found ); + s->password = tr_strdup( str ); #ifdef HAVE_ZLIB s->stream.zalloc = (alloc_func) Z_NULL; @@ -735,17 +753,15 @@ tr_rpcInit( tr_session * session, deflateInit( &s->stream, Z_BEST_COMPRESSION ); #endif - if( isEnabled ) + if( s->isEnabled ) + { + tr_ninf( MY_NAME, _( "Serving RPC and Web requests on port %d" ), (int) s->port ); tr_runInEventThread( session, startServer, s ); - if( isEnabled ) - { - tr_ninf( MY_NAME, _( "Serving RPC and Web requests on port %d" ), (int)port ); - - if( isWhitelistEnabled ) + if( s->isWhitelistEnabled ) tr_ninf( MY_NAME, _( "Whitelist enabled" ) ); - if( isPasswordEnabled ) + if( s->isPasswordEnabled ) tr_ninf( MY_NAME, _( "Password required" ) ); } diff --git a/libtransmission/rpc-server.h b/libtransmission/rpc-server.h index 793ca3472..cfb2fa854 100644 --- a/libtransmission/rpc-server.h +++ b/libtransmission/rpc-server.h @@ -20,13 +20,7 @@ typedef struct tr_rpc_server tr_rpc_server; tr_rpc_server * tr_rpcInit( tr_session * session, - tr_bool isEnabled, - tr_port port, - tr_bool isWhitelistEnabled, - const char * whitelist, - tr_bool isPasswordEnabled, - const char * username, - const char * password ); + tr_benc * settings ); void tr_rpcClose( tr_rpc_server ** freeme ); diff --git a/libtransmission/session.c b/libtransmission/session.c index e0d84ff56..7f8c5d85e 100644 --- a/libtransmission/session.c +++ b/libtransmission/session.c @@ -369,8 +369,6 @@ tr_sessionInit( const char * tag, tr_benc settings; tr_session * session; char * filename; - int64_t rpc_enabled, whitelist_enabled, rpc_auth_enabled, rpc_port; - const char * whitelist = NULL, *rpc_passwd = NULL, *rpc_username = NULL; assert( tr_bencIsDict( clientSettings ) ); @@ -527,16 +525,7 @@ tr_sessionInit( const char * tag, tr_statsInit( session ); session->web = tr_webInit( session ); - found = tr_bencDictFindInt( &settings, TR_PREFS_KEY_RPC_ENABLED, &rpc_enabled ) - && tr_bencDictFindInt( &settings, TR_PREFS_KEY_RPC_PORT, &rpc_port ) - && tr_bencDictFindInt( &settings, TR_PREFS_KEY_RPC_WHITELIST_ENABLED, &whitelist_enabled ) - && tr_bencDictFindInt( &settings, TR_PREFS_KEY_RPC_AUTH_REQUIRED, &rpc_auth_enabled ) - && tr_bencDictFindStr( &settings, TR_PREFS_KEY_RPC_WHITELIST, &whitelist ) - && tr_bencDictFindStr( &settings, TR_PREFS_KEY_RPC_USERNAME, &rpc_username ) - && tr_bencDictFindStr( &settings, TR_PREFS_KEY_RPC_PASSWORD, &rpc_passwd ); - assert( found ); - session->rpcServer = tr_rpcInit( session, rpc_enabled, rpc_port, whitelist_enabled, whitelist, - rpc_auth_enabled, rpc_username, rpc_passwd ); + session->rpcServer = tr_rpcInit( session, &settings ); metainfoLookupRescan( session );