@ -1674,15 +1674,15 @@ void CConnman::ProcessOneShot()
}
}
}
}
void CConnman : : ThreadOpenConnections ( )
void CConnman : : ThreadOpenConnections ( const std : : vector < std : : string > connect )
{
{
// Connect to specific addresses
// Connect to specific addresses
if ( gArgs . IsArgSet ( " -connect " ) )
if ( ! connect . empty ( ) )
{
{
for ( int64_t nLoop = 0 ; ; nLoop + + )
for ( int64_t nLoop = 0 ; ; nLoop + + )
{
{
ProcessOneShot ( ) ;
ProcessOneShot ( ) ;
for ( const std : : string & strAddr : gArgs . GetArgs ( " - connect" ) )
for ( const std : : string & strAddr : connect )
{
{
CAddress addr ( CService ( ) , NODE_NONE ) ;
CAddress addr ( CService ( ) , NODE_NONE ) ;
OpenNetworkConnection ( addr , false , nullptr , strAddr . c_str ( ) ) ;
OpenNetworkConnection ( addr , false , nullptr , strAddr . c_str ( ) ) ;
@ -2344,9 +2344,16 @@ bool CConnman::Start(CScheduler& scheduler, const Options& connOptions)
// Initiate outbound connections from -addnode
// Initiate outbound connections from -addnode
threadOpenAddedConnections = std : : thread ( & TraceThread < std : : function < void ( ) > > , " addcon " , std : : function < void ( ) > ( std : : bind ( & CConnman : : ThreadOpenAddedConnections , this ) ) ) ;
threadOpenAddedConnections = std : : thread ( & TraceThread < std : : function < void ( ) > > , " addcon " , std : : function < void ( ) > ( std : : bind ( & CConnman : : ThreadOpenAddedConnections , this ) ) ) ;
// Initiate outbound connections unless connect=0
if ( connOptions . m_use_addrman_outgoing & & ! connOptions . m_specified_outgoing . empty ( ) ) {
if ( ! gArgs . IsArgSet ( " -connect " ) | | gArgs . GetArgs ( " -connect " ) . size ( ) ! = 1 | | gArgs . GetArgs ( " -connect " ) [ 0 ] ! = " 0 " )
if ( clientInterface ) {
threadOpenConnections = std : : thread ( & TraceThread < std : : function < void ( ) > > , " opencon " , std : : function < void ( ) > ( std : : bind ( & CConnman : : ThreadOpenConnections , this ) ) ) ;
clientInterface - > ThreadSafeMessageBox (
_ ( " Cannot provide specific connections and have addrman find outgoing connections at the same. " ) ,
" " , CClientUIInterface : : MSG_ERROR ) ;
}
return false ;
}
if ( connOptions . m_use_addrman_outgoing | | ! connOptions . m_specified_outgoing . empty ( ) )
threadOpenConnections = std : : thread ( & TraceThread < std : : function < void ( ) > > , " opencon " , std : : function < void ( ) > ( std : : bind ( & CConnman : : ThreadOpenConnections , this , connOptions . m_specified_outgoing ) ) ) ;
// Process messages
// Process messages
threadMessageHandler = std : : thread ( & TraceThread < std : : function < void ( ) > > , " msghand " , std : : function < void ( ) > ( std : : bind ( & CConnman : : ThreadMessageHandler , this ) ) ) ;
threadMessageHandler = std : : thread ( & TraceThread < std : : function < void ( ) > > , " msghand " , std : : function < void ( ) > ( std : : bind ( & CConnman : : ThreadMessageHandler , this ) ) ) ;