#1969 separate picking a random port from choosing a random port at startup
This commit is contained in:
parent
a621b7eedb
commit
aab0c1b87c
|
@ -422,7 +422,7 @@ readargs( int argc,
|
|||
|
||||
case 'P':
|
||||
tr_bencDictAddStr( &top, "method", "session-set" );
|
||||
tr_bencDictAddBool( args, TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED, TRUE);
|
||||
tr_bencDictAddBool( args, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, TRUE);
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
|
|
|
@ -369,7 +369,7 @@
|
|||
"peer-limit-per-torrent" | number maximum global number of peers
|
||||
"pex-enabled" | 'boolean' true means allow pex in public torrents
|
||||
"peer-port" | number port number
|
||||
"peer-port-random-enabled" | 'boolean' true means pick a random peer port on launch
|
||||
"peer-port-random-on-start"| 'boolean' true means pick a random peer port on launch
|
||||
"port-forwarding-enabled" | 'boolean' true means enabled
|
||||
"rpc-version" | number the current RPC API version
|
||||
"rpc-version-minimum" | number the minimum RPC API version supported
|
||||
|
|
|
@ -939,7 +939,7 @@ prefschanged( TrCore * core UNUSED,
|
|||
{
|
||||
tr_setMessageLevel( pref_int_get( key ) );
|
||||
}
|
||||
else if( !strcmp( key, TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED ) )
|
||||
else if( !strcmp( key, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START ) )
|
||||
{
|
||||
/* FIXME */
|
||||
}
|
||||
|
|
|
@ -970,9 +970,9 @@ sessionSet( tr_session * session,
|
|||
tr_sessionSetPeerLimitPerTorrent( session, i );
|
||||
if( tr_bencDictFindBool( args_in, TR_PREFS_KEY_PEX_ENABLED, &boolVal ) )
|
||||
tr_sessionSetPexEnabled( session, boolVal );
|
||||
if( tr_bencDictFindBool( args_in, TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED, &boolVal ) && boolVal )
|
||||
tr_sessionSetPeerPortRandom( session );
|
||||
else if( tr_bencDictFindInt( args_in, TR_PREFS_KEY_PEER_PORT, &i ) )
|
||||
if( tr_bencDictFindBool( args_in, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, &boolVal ) )
|
||||
tr_sessionSetPeerPortRandomOnStart( session, boolVal );
|
||||
if( tr_bencDictFindInt( args_in, TR_PREFS_KEY_PEER_PORT, &i ) )
|
||||
tr_sessionSetPeerPort( session, i );
|
||||
if( tr_bencDictFindBool( args_in, TR_PREFS_KEY_PORT_FORWARDING, &boolVal ) )
|
||||
tr_sessionSetPortForwardingEnabled( session, boolVal );
|
||||
|
@ -1076,6 +1076,7 @@ sessionGet( tr_session * s,
|
|||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_LIMIT_TORRENT, tr_sessionGetPeerLimitPerTorrent( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_PEX_ENABLED, tr_sessionIsPexEnabled( s ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT, tr_sessionGetPeerPort( s ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, tr_sessionGetPeerPortRandomOnStart( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_PORT_FORWARDING, tr_sessionIsPortForwardingEnabled( s ) );
|
||||
tr_bencDictAddInt ( d, "rpc-version", 4 );
|
||||
tr_bencDictAddInt ( d, "rpc-version-minimum", 1 );
|
||||
|
|
|
@ -254,7 +254,7 @@ tr_sessionGetDefaultSettings( tr_benc * d )
|
|||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_LIMIT_GLOBAL, atoi( TR_DEFAULT_PEER_LIMIT_GLOBAL_STR ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_LIMIT_TORRENT, atoi( TR_DEFAULT_PEER_LIMIT_TORRENT_STR ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT, atoi( TR_DEFAULT_PEER_PORT_STR ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED, FALSE );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, FALSE );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT_RANDOM_LOW, 1024 );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT_RANDOM_HIGH, 65535 );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_SOCKET_TOS, atoi( TR_DEFAULT_PEER_SOCKET_TOS_STR ) );
|
||||
|
@ -308,7 +308,7 @@ tr_sessionGetSettings( tr_session * s, struct tr_benc * d )
|
|||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_LIMIT_GLOBAL, tr_sessionGetPeerLimit( s ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_LIMIT_TORRENT, s->peerLimitPerTorrent );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT, tr_sessionGetPeerPort( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED, s->isPortRandom );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, s->isPortRandom );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT_RANDOM_LOW, s->randomPortLow );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_PORT_RANDOM_HIGH, s->randomPortHigh );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_PEER_SOCKET_TOS, s->peerSocketTOS );
|
||||
|
@ -589,7 +589,7 @@ tr_sessionInitImpl( void * vdata )
|
|||
*** random port
|
||||
**/
|
||||
|
||||
found = tr_bencDictFindBool( &settings, TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED, &boolVal );
|
||||
found = tr_bencDictFindBool( &settings, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, &boolVal );
|
||||
assert( found );
|
||||
session->isPortRandom = boolVal;
|
||||
|
||||
|
@ -793,22 +793,10 @@ tr_sessionSetPeerPort( tr_session * session,
|
|||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
session->isPortRandom = FALSE;
|
||||
session->peerPort = port;
|
||||
setPortImpl( session, session->peerPort );
|
||||
}
|
||||
|
||||
tr_port
|
||||
tr_sessionSetPeerPortRandom( tr_session * session )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
session->isPortRandom = TRUE;
|
||||
session->peerPort = getRandomPort( session );
|
||||
setPortImpl( session, session->peerPort );
|
||||
return session->peerPort;
|
||||
}
|
||||
|
||||
tr_port
|
||||
tr_sessionGetPeerPort( const tr_session * session )
|
||||
{
|
||||
|
@ -817,6 +805,33 @@ tr_sessionGetPeerPort( const tr_session * session )
|
|||
return session->peerPort;
|
||||
}
|
||||
|
||||
tr_port
|
||||
tr_sessionSetPeerPortRandom( tr_session * session )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
session->peerPort = getRandomPort( session );
|
||||
setPortImpl( session, session->peerPort );
|
||||
return session->peerPort;
|
||||
}
|
||||
|
||||
void
|
||||
tr_sessionSetPeerPortRandomOnStart( tr_session * session,
|
||||
tr_bool random )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
session->isPortRandom = TRUE;
|
||||
}
|
||||
|
||||
tr_bool
|
||||
tr_sessionGetPeerPortRandomOnStart( tr_session * session )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
return session->isPortRandom;
|
||||
}
|
||||
|
||||
tr_port_forwarding
|
||||
tr_sessionGetPortForwarding( const tr_session * session )
|
||||
{
|
||||
|
|
|
@ -177,7 +177,7 @@ static TR_INLINE tr_bool tr_isEncryptionMode( tr_encryption_mode m )
|
|||
#define TR_PREFS_KEY_PEER_LIMIT_GLOBAL "peer-limit-global"
|
||||
#define TR_PREFS_KEY_PEER_LIMIT_TORRENT "peer-limit-per-torrent"
|
||||
#define TR_PREFS_KEY_PEER_PORT "peer-port"
|
||||
#define TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED "peer-port-random-enabled"
|
||||
#define TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START "peer-port-random-on-start"
|
||||
#define TR_PREFS_KEY_PEER_PORT_RANDOM_LOW "peer-port-random-low"
|
||||
#define TR_PREFS_KEY_PEER_PORT_RANDOM_HIGH "peer-port-random-high"
|
||||
#define TR_PREFS_KEY_PEER_SOCKET_TOS "peer-socket-tos"
|
||||
|
@ -538,9 +538,14 @@ tr_bool tr_sessionIsPortForwardingEnabled( const tr_session * session );
|
|||
void tr_sessionSetPeerPort( tr_session * session,
|
||||
tr_port port);
|
||||
|
||||
tr_port tr_sessionGetPeerPort( const tr_session * session );
|
||||
|
||||
tr_port tr_sessionSetPeerPortRandom( tr_session * session );
|
||||
|
||||
tr_port tr_sessionGetPeerPort( const tr_session * session );
|
||||
void tr_sessionSetPeerPortRandomOnStart( tr_session * session,
|
||||
tr_bool random );
|
||||
|
||||
tr_bool tr_sessionGetPeerPortRandomOnStart( tr_session * session );
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
@ -224,7 +224,6 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
|||
tr_bencInitDict(&settings, 32);
|
||||
tr_sessionGetDefaultSettings(&settings);
|
||||
|
||||
#warning how to work with schedule?
|
||||
const BOOL usesSpeedLimitSched = [fDefaults boolForKey: @"SpeedLimitAuto"];
|
||||
if (!usesSpeedLimitSched)
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_ALT_SPEED_ENABLED, [fDefaults boolForKey: @"SpeedLimit"]);
|
||||
|
@ -254,7 +253,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
|||
tr_bencDictAddInt(&settings, TR_PREFS_KEY_PEER_LIMIT_TORRENT, [fDefaults integerForKey: @"PeersTorrent"]);
|
||||
|
||||
const BOOL randomPort = [fDefaults boolForKey: @"RandomPort"];
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_PEER_PORT_RANDOM_ENABLED, randomPort);
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, randomPort);
|
||||
if (!randomPort)
|
||||
tr_bencDictAddInt(&settings, TR_PREFS_KEY_PEER_PORT, [fDefaults integerForKey: @"BindPort"]);
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@
|
|||
|
||||
- (void) setPort: (id) sender;
|
||||
- (void) randomPort: (id) sender;
|
||||
- (void) setRandomPortOnStart: (id) sender;
|
||||
- (void) setNat: (id) sender;
|
||||
- (void) updatePortStatus;
|
||||
- (void) portCheckerDidFinishProbing: (PortChecker *) portChecker;
|
||||
|
|
|
@ -353,6 +353,11 @@ tr_session * fHandle;
|
|||
[self setPort: fPortField];
|
||||
}
|
||||
|
||||
- (void) setRandomPortOnStart: (id) sender
|
||||
{
|
||||
tr_sessionSetPeerPortRandomOnStart(fHandle, [sender state] == NSOnState);
|
||||
}
|
||||
|
||||
- (void) setNat: (id) sender
|
||||
{
|
||||
tr_sessionSetPortForwardingEnabled(fHandle, [fDefaults boolForKey: @"NatTraversal"]);
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<string key="IBDocument.HIToolboxVersion">353.00</string>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="153"/>
|
||||
<integer value="66"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -3366,7 +3366,7 @@ zcfN584IzijOSc5pzorOqs66ztvO+88czzzPXc99z57Pvs/fz+/QANAg0EHQYdCC0KLQw9Dj0PPRFNE0
|
|||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="352903881">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -3956,7 +3956,6 @@ AAABAAAAAQ</bytes>
|
|||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{542, 226}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
<string key="NSExtension">NSResponder</string>
|
||||
</object>
|
||||
|
@ -4419,7 +4418,7 @@ AAABAAAAAQ</bytes>
|
|||
<string key="NSExtension">NSResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="204700639">
|
||||
<nil key="NSNextResponder"/>
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -5050,6 +5049,7 @@ AAABAAAAAQ</bytes>
|
|||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{542, 345}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
<string key="NSExtension">NSResponder</string>
|
||||
</object>
|
||||
|
@ -8711,6 +8711,14 @@ AAABAAAAAQ</bytes>
|
|||
</object>
|
||||
<int key="connectionID">1903</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">setRandomPortOnStart:</string>
|
||||
<reference key="source" ref="511492310"/>
|
||||
<reference key="destination" ref="200017199"/>
|
||||
</object>
|
||||
<int key="connectionID">1904</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
|
@ -12499,7 +12507,7 @@ AAABAAAAAQ</bytes>
|
|||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">1903</int>
|
||||
<int key="maxID">1904</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
@ -12683,6 +12691,7 @@ AAABAAAAAQ</bytes>
|
|||
<string>setRPCUseWhitelist:</string>
|
||||
<string>setRPCUsername:</string>
|
||||
<string>setRPCWebUIDiscovery:</string>
|
||||
<string>setRandomPortOnStart:</string>
|
||||
<string>setRatioStop:</string>
|
||||
<string>setSound:</string>
|
||||
<string>setSpeedLimit:</string>
|
||||
|
@ -12742,6 +12751,7 @@ AAABAAAAAQ</bytes>
|
|||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
|
|
Loading…
Reference in New Issue