Skip to content

Commit fd369d2

Browse files
committed
Switched httpserver.cpp to use RAII wrapped libevents.
1 parent 02d64bd commit fd369d2

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

src/httpserver.cpp

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
#include <signal.h>
2222
#include <future>
2323

24-
#include <event2/event.h>
25-
#include <event2/http.h>
2624
#include <event2/thread.h>
2725
#include <event2/buffer.h>
2826
#include <event2/util.h>
2927
#include <event2/keyvalq_struct.h>
3028

29+
#include "support/events.h"
30+
3131
#ifdef EVENT__HAVE_NETINET_IN_H
3232
#include <netinet/in.h>
3333
#ifdef _XOPEN_SOURCE_EXTENDED
@@ -369,9 +369,6 @@ static void libevent_log_cb(int severity, const char *msg)
369369

370370
bool InitHTTPServer()
371371
{
372-
struct evhttp* http = 0;
373-
struct event_base* base = 0;
374-
375372
if (!InitHTTPAllowList())
376373
return false;
377374

@@ -398,17 +395,13 @@ bool InitHTTPServer()
398395
evthread_use_pthreads();
399396
#endif
400397

401-
base = event_base_new(); // XXX RAII
402-
if (!base) {
403-
LogPrintf("Couldn't create an event_base: exiting\n");
404-
return false;
405-
}
398+
raii_event_base base_ctr = obtain_event_base();
406399

407400
/* Create a new evhttp object to handle requests. */
408-
http = evhttp_new(base); // XXX RAII
401+
raii_evhttp http_ctr = obtain_evhttp(base_ctr.get());
402+
struct evhttp* http = http_ctr.get();
409403
if (!http) {
410404
LogPrintf("couldn't create evhttp. Exiting.\n");
411-
event_base_free(base);
412405
return false;
413406
}
414407

@@ -419,8 +412,6 @@ bool InitHTTPServer()
419412

420413
if (!HTTPBindAddresses(http)) {
421414
LogPrintf("Unable to bind any endpoint for RPC server\n");
422-
evhttp_free(http);
423-
event_base_free(base);
424415
return false;
425416
}
426417

@@ -429,8 +420,9 @@ bool InitHTTPServer()
429420
LogPrintf("HTTP: creating work queue of depth %d\n", workQueueDepth);
430421

431422
workQueue = new WorkQueue<HTTPClosure>(workQueueDepth);
432-
eventBase = base;
433-
eventHTTP = http;
423+
// tranfer ownership to eventBase/HTTP via .release()
424+
eventBase = base_ctr.release();
425+
eventHTTP = http_ctr.release();
434426
return true;
435427
}
436428

0 commit comments

Comments
 (0)