diff --git a/init.cpp b/init.cpp index 61ca4d2bd..cfb5d8e33 100644 --- a/init.cpp +++ b/init.cpp @@ -181,7 +181,8 @@ bool AppInit2(int argc, char* argv[]) " -rpcpassword=\t " + _("Password for JSON-RPC connections\n") + " -rpcport= \t\t " + _("Listen for JSON-RPC connections on \n") + " -rpcallowip= \t\t " + _("Allow JSON-RPC connections from specified IP address\n") + - " -rpcconnect= \t " + _("Send commands to node running on \n"); + " -rpcconnect= \t " + _("Send commands to node running on \n") + + " -nolisten \t " + _("Don't accept connections from outside"); #ifdef USE_SSL strUsage += string() + @@ -211,6 +212,8 @@ bool AppInit2(int argc, char* argv[]) fPrintToDebugger = GetBoolArg("-printtodebugger"); fTestNet = GetBoolArg("-testnet"); + + fNoListen = GetBoolArg("-nolisten"); if (fCommandLine) { @@ -290,10 +293,13 @@ bool AppInit2(int argc, char* argv[]) // Bind to the port early so we can tell if another instance is already running. string strErrors; - if (!BindListenPort(strErrors)) + if (!fNoListen) { - wxMessageBox(strErrors, "Bitcoin"); - return false; + if (!BindListenPort(strErrors)) + { + wxMessageBox(strErrors, "Bitcoin"); + return false; + } } // diff --git a/net.cpp b/net.cpp index da7661962..a626acd37 100644 --- a/net.cpp +++ b/net.cpp @@ -643,7 +643,9 @@ void ThreadSocketHandler2(void* parg) FD_ZERO(&fdsetSend); FD_ZERO(&fdsetError); SOCKET hSocketMax = 0; - FD_SET(hListenSocket, &fdsetRecv); + + if(hListenSocket != INVALID_SOCKET) + FD_SET(hListenSocket, &fdsetRecv); hSocketMax = max(hSocketMax, hListenSocket); CRITICAL_BLOCK(cs_vNodes) { @@ -680,7 +682,7 @@ void ThreadSocketHandler2(void* parg) // // Accept new connections // - if (FD_ISSET(hListenSocket, &fdsetRecv)) + if (hListenSocket != INVALID_SOCKET && FD_ISSET(hListenSocket, &fdsetRecv)) { struct sockaddr_in sockaddr; socklen_t len = sizeof(sockaddr); @@ -1344,7 +1346,7 @@ void StartNode(void* parg) #endif printf("addrLocalHost = %s\n", addrLocalHost.ToString().c_str()); - if (fUseProxy || mapArgs.count("-connect")) + if (fUseProxy || mapArgs.count("-connect") || fNoListen) { // Proxies can't take incoming connections addrLocalHost.ip = CAddress("0.0.0.0").ip; diff --git a/util.cpp b/util.cpp index 42256a9d0..694f91304 100644 --- a/util.cpp +++ b/util.cpp @@ -17,7 +17,7 @@ bool fDaemon = false; bool fCommandLine = false; string strMiscWarning; bool fTestNet = false; - +bool fNoListen = false; diff --git a/util.h b/util.h index f57e40106..c69bf1ce1 100644 --- a/util.h +++ b/util.h @@ -146,6 +146,7 @@ extern bool fDaemon; extern bool fCommandLine; extern string strMiscWarning; extern bool fTestNet; +extern bool fNoListen; void RandAddSeed(); void RandAddSeedPerfmon();