Fix race condition between starting HTTP server thread and setting EventBase()

Split StartHTTPServer into InitHTTPServer and StartHTTPServer to give
clients a window to register their handlers without race conditions.

Thanks @ajweiss for figuring this out.
This commit is contained in:
Wladimir J. van der Laan
2015-08-28 16:55:16 +02:00
parent 6d2bc22146
commit 3a174cd400
3 changed files with 26 additions and 11 deletions

View File

@@ -618,7 +618,7 @@ bool AppInitServers(boost::thread_group& threadGroup)
{
RPCServer::OnStopped(&OnRPCStopped);
RPCServer::OnPreCommand(&OnRPCPreCommand);
if (!StartHTTPServer(threadGroup))
if (!InitHTTPServer())
return false;
if (!StartRPC())
return false;
@@ -626,6 +626,8 @@ bool AppInitServers(boost::thread_group& threadGroup)
return false;
if (GetBoolArg("-rest", false) && !StartREST())
return false;
if (!StartHTTPServer(threadGroup))
return false;
return true;
}