From 3a174cd400c6c239539d4c0c10b557c3e0615212 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 28 Aug 2015 16:55:16 +0200 Subject: 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. --- src/httpserver.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/httpserver.h') 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(); -- cgit v1.2.3