diff options
| author | Wladimir J. van der Laan <[email protected]> | 2015-08-28 16:55:16 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2015-09-03 10:59:19 +0200 |
| commit | 3a174cd400c6c239539d4c0c10b557c3e0615212 (patch) | |
| tree | 3a7b26b9218f9e3d17d8a3f5f77e032b35f6e416 /src/httpserver.h | |
| parent | Document options for new HTTP/RPC server in --help (diff) | |
| download | discoin-3a174cd400c6c239539d4c0c10b557c3e0615212.tar.xz discoin-3a174cd400c6c239539d4c0c10b557c3e0615212.zip | |
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/httpserver.h')
| -rw-r--r-- | src/httpserver.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/httpserver.h b/src/httpserver.h index 1b0d77ad4..459c60c04 100644 --- a/src/httpserver.h +++ b/src/httpserver.h @@ -20,7 +20,14 @@ struct event_base; class CService; class HTTPRequest; -/** Start HTTP server */ +/** Initialize HTTP server. + * Call this before RegisterHTTPHandler or EventBase(). + */ +bool InitHTTPServer(); +/** Start HTTP server. + * This is separate from InitHTTPServer to give users race-condition-free time + * to register their handlers between InitHTTPServer and StartHTTPServer. + */ bool StartHTTPServer(boost::thread_group& threadGroup); /** Interrupt HTTP server threads */ void InterruptHTTPServer(); |