21
21
#include < signal.h>
22
22
#include < future>
23
23
24
- #include < event2/event.h>
25
- #include < event2/http.h>
26
24
#include < event2/thread.h>
27
25
#include < event2/buffer.h>
28
26
#include < event2/util.h>
29
27
#include < event2/keyvalq_struct.h>
30
28
29
+ #include " support/events.h"
30
+
31
31
#ifdef EVENT__HAVE_NETINET_IN_H
32
32
#include < netinet/in.h>
33
33
#ifdef _XOPEN_SOURCE_EXTENDED
@@ -369,9 +369,6 @@ static void libevent_log_cb(int severity, const char *msg)
369
369
370
370
bool InitHTTPServer ()
371
371
{
372
- struct evhttp * http = 0 ;
373
- struct event_base * base = 0 ;
374
-
375
372
if (!InitHTTPAllowList ())
376
373
return false ;
377
374
@@ -398,17 +395,13 @@ bool InitHTTPServer()
398
395
evthread_use_pthreads ();
399
396
#endif
400
397
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 ();
406
399
407
400
/* 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 ();
409
403
if (!http) {
410
404
LogPrintf (" couldn't create evhttp. Exiting.\n " );
411
- event_base_free (base);
412
405
return false ;
413
406
}
414
407
@@ -419,8 +412,6 @@ bool InitHTTPServer()
419
412
420
413
if (!HTTPBindAddresses (http)) {
421
414
LogPrintf (" Unable to bind any endpoint for RPC server\n " );
422
- evhttp_free (http);
423
- event_base_free (base);
424
415
return false ;
425
416
}
426
417
@@ -429,8 +420,9 @@ bool InitHTTPServer()
429
420
LogPrintf (" HTTP: creating work queue of depth %d\n " , workQueueDepth);
430
421
431
422
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 ();
434
426
return true ;
435
427
}
436
428
0 commit comments