(trunk libT) Clean up RPC server initialization (wereHamster)

This commit is contained in:
Charles Kerr 2009-01-13 16:35:06 +00:00
parent 8b72408948
commit db58b89f6e
3 changed files with 39 additions and 40 deletions

View File

@ -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" ) );
}

View File

@ -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 );

View File

@ -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 );