aboutsummaryrefslogtreecommitdiff
path: root/src/init.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-08-28 16:55:16 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-09-03 10:59:19 +0200
commit3a174cd400c6c239539d4c0c10b557c3e0615212 (patch)
tree3a7b26b9218f9e3d17d8a3f5f77e032b35f6e416 /src/init.cpp
parent6d2bc221463ffe3ed3a99e8c682b090983b2e7b5 (diff)
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.
Diffstat (limited to 'src/init.cpp')
-rw-r--r--src/init.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/init.cpp b/src/init.cpp
index bbf73dc8f4..4aaeee257b 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -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;
}