@ -880,9 +880,7 @@ bool AppInitParameterInteraction()
}
}
// -bind and -whitebind can't be set when not listening
// -bind and -whitebind can't be set when not listening
size_t nUserBind =
size_t nUserBind = gArgs . GetArgs ( " -bind " ) . size ( ) + gArgs . GetArgs ( " -whitebind " ) . size ( ) ;
( gArgs . IsArgSet ( " -bind " ) ? gArgs . GetArgs ( " -bind " ) . size ( ) : 0 ) +
( gArgs . IsArgSet ( " -whitebind " ) ? gArgs . GetArgs ( " -whitebind " ) . size ( ) : 0 ) ;
if ( nUserBind ! = 0 & & ! gArgs . GetBoolArg ( " -listen " , DEFAULT_LISTEN ) ) {
if ( nUserBind ! = 0 & & ! gArgs . GetBoolArg ( " -listen " , DEFAULT_LISTEN ) ) {
return InitError ( " Cannot set -bind or -whitebind together with -listen=0 " ) ;
return InitError ( " Cannot set -bind or -whitebind together with -listen=0 " ) ;
}
}
@ -920,15 +918,13 @@ bool AppInitParameterInteraction()
}
}
// Now remove the logging categories which were explicitly excluded
// Now remove the logging categories which were explicitly excluded
if ( gArgs . IsArgSet ( " -debugexclude " ) ) {
for ( const std : : string & cat : gArgs . GetArgs ( " -debugexclude " ) ) {
for ( const std : : string & cat : gArgs . GetArgs ( " -debugexclude " ) ) {
uint32_t flag = 0 ;
uint32_t flag = 0 ;
if ( ! GetLogCategory ( & flag , & cat ) ) {
if ( ! GetLogCategory ( & flag , & cat ) ) {
InitWarning ( strprintf ( _ ( " Unsupported logging category %s=%s. " ) , " -debugexclude " , cat ) ) ;
InitWarning ( strprintf ( _ ( " Unsupported logging category %s=%s. " ) , " -debugexclude " , cat ) ) ;
continue ;
continue ;
}
logCategories & = ~ flag ;
}
}
logCategories & = ~ flag ;
}
}
// Check for -debugnet
// Check for -debugnet
@ -1238,13 +1234,10 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
// sanitize comments per BIP-0014, format user agent and check total size
// sanitize comments per BIP-0014, format user agent and check total size
std : : vector < std : : string > uacomments ;
std : : vector < std : : string > uacomments ;
if ( gArgs . IsArgSet ( " -uacomment " ) ) {
for ( const std : : string & cmt : gArgs . GetArgs ( " -uacomment " ) ) {
for ( std : : string cmt : gArgs . GetArgs ( " -uacomment " ) )
if ( cmt ! = SanitizeString ( cmt , SAFE_CHARS_UA_COMMENT ) )
{
return InitError ( strprintf ( _ ( " User Agent comment (%s) contains unsafe characters . " ), cmt)) ;
if ( cmt ! = SanitizeString ( cmt , SAFE_CHARS_UA_COMMENT ) )
uacomments . push_back ( cmt ) ;
return InitError ( strprintf ( _ ( " User Agent comment (%s) contains unsafe characters . " ), cmt)) ;
uacomments . push_back ( cmt ) ;
}
}
}
strSubVersion = FormatSubVersion ( CLIENT_NAME , CLIENT_VERSION , uacomments ) ;
strSubVersion = FormatSubVersion ( CLIENT_NAME , CLIENT_VERSION , uacomments ) ;
if ( strSubVersion . size ( ) > MAX_SUBVERSION_LENGTH ) {
if ( strSubVersion . size ( ) > MAX_SUBVERSION_LENGTH ) {
@ -1317,14 +1310,12 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
fDiscover = GetBoolArg ( " -discover " , true ) ;
fDiscover = GetBoolArg ( " -discover " , true ) ;
fRelayTxes = ! GetBoolArg ( " -blocksonly " , DEFAULT_BLOCKSONLY ) ;
fRelayTxes = ! GetBoolArg ( " -blocksonly " , DEFAULT_BLOCKSONLY ) ;
if ( gArgs . IsArgSet ( " -externalip " ) ) {
for ( const std : : string & strAddr : gArgs . GetArgs ( " -externalip " ) ) {
for ( const std : : string & strAddr : gArgs . GetArgs ( " -externalip " ) ) {
CService addrLocal ;
CService addrLocal ;
if ( Lookup ( strAddr . c_str ( ) , addrLocal , GetListenPort ( ) , fNameLookup ) & & addrLocal . IsValid ( ) )
if ( Lookup ( strAddr . c_str ( ) , addrLocal , GetListenPort ( ) , fNameLookup ) & & addrLocal . IsValid ( ) )
AddLocal ( addrLocal , LOCAL_MANUAL ) ;
AddLocal ( addrLocal , LOCAL_MANUAL ) ;
else
else
return InitError ( ResolveErrMsg ( " externalip " , strAddr ) ) ;
return InitError ( ResolveErrMsg ( " externalip " , strAddr ) ) ;
}
}
}
# if ENABLE_ZMQ
# if ENABLE_ZMQ
@ -1553,10 +1544,8 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
uiInterface . NotifyBlockTip . connect ( BlockNotifyCallback ) ;
uiInterface . NotifyBlockTip . connect ( BlockNotifyCallback ) ;
std : : vector < fs : : path > vImportFiles ;
std : : vector < fs : : path > vImportFiles ;
if ( gArgs . IsArgSet ( " -loadblock " ) )
for ( const std : : string & strFile : gArgs . GetArgs ( " -loadblock " ) ) {
{
vImportFiles . push_back ( strFile ) ;
for ( const std : : string & strFile : gArgs . GetArgs ( " -loadblock " ) )
vImportFiles . push_back ( strFile ) ;
}
}
threadGroup . create_thread ( boost : : bind ( & ThreadImport , vImportFiles ) ) ;
threadGroup . create_thread ( boost : : bind ( & ThreadImport , vImportFiles ) ) ;
@ -1598,36 +1587,30 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
connOptions . nMaxOutboundTimeframe = nMaxOutboundTimeframe ;
connOptions . nMaxOutboundTimeframe = nMaxOutboundTimeframe ;
connOptions . nMaxOutboundLimit = nMaxOutboundLimit ;
connOptions . nMaxOutboundLimit = nMaxOutboundLimit ;
if ( gArgs . IsArgSet ( " -bind " ) ) {
for ( const std : : string & strBind : gArgs . GetArgs ( " -bind " ) ) {
for ( const std : : string & strBind : gArgs . GetArgs ( " -bind " ) ) {
CService addrBind ;
CService addrBind ;
if ( ! Lookup ( strBind . c_str ( ) , addrBind , GetListenPort ( ) , false ) ) {
if ( ! Lookup ( strBind . c_str ( ) , addrBind , GetListenPort ( ) , false ) ) {
return InitError ( ResolveErrMsg ( " bind " , strBind ) ) ;
return InitError ( ResolveErrMsg ( " bind " , strBind ) ) ;
}
connOptions . vBinds . push_back ( addrBind ) ;
}
}
connOptions . vBinds . push_back ( addrBind ) ;
}
}
if ( gArgs . IsArgSet ( " -whitebind " ) ) {
for ( const std : : string & strBind : gArgs . GetArgs ( " -whitebind " ) ) {
for ( const std : : string & strBind : gArgs . GetArgs ( " -whitebind " ) ) {
CService addrBind ;
CService addrBind ;
if ( ! Lookup ( strBind . c_str ( ) , addrBind , 0 , false ) ) {
if ( ! Lookup ( strBind . c_str ( ) , addrBind , 0 , false ) ) {
return InitError ( ResolveErrMsg ( " whitebind " , strBind ) ) ;
return InitError ( ResolveErrMsg ( " whitebind " , strBind ) ) ;
}
}
if ( addrBind . GetPort ( ) = = 0 ) {
if ( addrBind . GetPort ( ) = = 0 ) {
return InitError ( strprintf ( _ ( " Need to specify a port with -whitebind: '%s' " ) , strBind ) ) ;
return InitError ( strprintf ( _ ( " Need to specify a port with -whitebind: '%s' " ) , strBind ) ) ;
}
connOptions . vWhiteBinds . push_back ( addrBind ) ;
}
}
connOptions . vWhiteBinds . push_back ( addrBind ) ;
}
}
if ( gArgs . IsArgSet ( " -whitelist " ) ) {
for ( const auto & net : gArgs . GetArgs ( " -whitelist " ) ) {
for ( const auto & net : gArgs . GetArgs ( " -whitelist " ) ) {
CSubNet subnet ;
CSubNet subnet ;
LookupSubNet ( net . c_str ( ) , subnet ) ;
LookupSubNet ( net . c_str ( ) , subnet ) ;
if ( ! subnet . IsValid ( ) )
if ( ! subnet . IsValid ( ) )
return InitError ( strprintf ( _ ( " Invalid netmask specified in -whitelist: '%s' " ) , net ) ) ;
return InitError ( strprintf ( _ ( " Invalid netmask specified in -whitelist: '%s' " ) , net ) ) ;
connOptions . vWhitelistedRange . push_back ( subnet ) ;
connOptions . vWhitelistedRange . push_back ( subnet ) ;
}
}
}
if ( gArgs . IsArgSet ( " -seednode " ) ) {
if ( gArgs . IsArgSet ( " -seednode " ) ) {