diff options
author | Kalle Alm <kalle.alm@gmail.com> | 2017-01-11 22:50:00 +0900 |
---|---|---|
committer | Karl-Johan Alm <karljohan-alm@garage.co.jp> | 2017-03-22 10:32:58 -0700 |
commit | fd369d267b7bb29c81d45823f57308478222db62 (patch) | |
tree | ce566f3ee302202020ae909db17c0873f97c5c6c /src | |
parent | 02d64bd929c9663ba38e96721c6dbd89972d043d (diff) |
Switched httpserver.cpp to use RAII wrapped libevents.
Diffstat (limited to 'src')
-rw-r--r-- | src/httpserver.cpp | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/httpserver.cpp b/src/httpserver.cpp index 799de1c2cb..2d331cc169 100644 --- a/src/httpserver.cpp +++ b/src/httpserver.cpp @@ -21,13 +21,13 @@ #include <signal.h> #include <future> -#include <event2/event.h> -#include <event2/http.h> #include <event2/thread.h> #include <event2/buffer.h> #include <event2/util.h> #include <event2/keyvalq_struct.h> +#include "support/events.h" + #ifdef EVENT__HAVE_NETINET_IN_H #include <netinet/in.h> #ifdef _XOPEN_SOURCE_EXTENDED @@ -369,9 +369,6 @@ static void libevent_log_cb(int severity, const char *msg) bool InitHTTPServer() { - struct evhttp* http = 0; - struct event_base* base = 0; - if (!InitHTTPAllowList()) return false; @@ -398,17 +395,13 @@ bool InitHTTPServer() evthread_use_pthreads(); #endif - base = event_base_new(); // XXX RAII - if (!base) { - LogPrintf("Couldn't create an event_base: exiting\n"); - return false; - } + raii_event_base base_ctr = obtain_event_base(); /* Create a new evhttp object to handle requests. */ - http = evhttp_new(base); // XXX RAII + raii_evhttp http_ctr = obtain_evhttp(base_ctr.get()); + struct evhttp* http = http_ctr.get(); if (!http) { LogPrintf("couldn't create evhttp. Exiting.\n"); - event_base_free(base); return false; } @@ -419,8 +412,6 @@ bool InitHTTPServer() if (!HTTPBindAddresses(http)) { LogPrintf("Unable to bind any endpoint for RPC server\n"); - evhttp_free(http); - event_base_free(base); return false; } @@ -429,8 +420,9 @@ bool InitHTTPServer() LogPrintf("HTTP: creating work queue of depth %d\n", workQueueDepth); workQueue = new WorkQueue<HTTPClosure>(workQueueDepth); - eventBase = base; - eventHTTP = http; + // tranfer ownership to eventBase/HTTP via .release() + eventBase = base_ctr.release(); + eventHTTP = http_ctr.release(); return true; } |