diff --git a/lib/cpp/src/server/TNonblockingServer.cpp b/lib/cpp/src/server/TNonblockingServer.cpp
index 4774b36..89e9afd 100644
--- a/lib/cpp/src/server/TNonblockingServer.cpp
+++ b/lib/cpp/src/server/TNonblockingServer.cpp
@@ -567,7 +567,7 @@
     delete connection;
   }
 
-  if (eventBase_) {
+  if (eventBase_ && ownEventBase_) {
     event_base_free(eventBase_);
   }
 
@@ -802,10 +802,11 @@
 /**
  * Register the core libevent events onto the proper base.
  */
-void TNonblockingServer::registerEvents(event_base* base) {
+void TNonblockingServer::registerEvents(event_base* base, bool ownEventBase) {
   assert(serverSocket_ != -1);
   assert(!eventBase_);
   eventBase_ = base;
+  ownEventBase_ = ownEventBase;
 
   // Print some libevent stats
   GlobalOutput.printf("libevent %s method %s",
@@ -911,7 +912,7 @@
   }
 
   // Initialize libevent core
-  registerEvents(static_cast<event_base*>(event_init()));
+  registerEvents(static_cast<event_base*>(event_init()), true);
 
   // Run the preServe event
   if (eventHandler_ != NULL) {
diff --git a/lib/cpp/src/server/TNonblockingServer.h b/lib/cpp/src/server/TNonblockingServer.h
index 7b1cf4d..31741e4 100644
--- a/lib/cpp/src/server/TNonblockingServer.h
+++ b/lib/cpp/src/server/TNonblockingServer.h
@@ -132,6 +132,7 @@
 
   /// The event base for libevent
   event_base* eventBase_;
+  bool ownEventBase_;
 
   /// Event struct, used with eventBase_ for connection events
   struct event serverEvent_;
@@ -234,6 +235,7 @@
     port_(port),
     threadPoolProcessing_(false),
     eventBase_(NULL),
+    ownEventBase_(false),
     numTConnections_(0),
     numActiveProcessors_(0),
     connectionStackLimit_(CONNECTION_STACK_LIMIT),
@@ -259,6 +261,7 @@
     port_(port),
     threadManager_(threadManager),
     eventBase_(NULL),
+    ownEventBase_(false),
     numTConnections_(0),
     numActiveProcessors_(0),
     connectionStackLimit_(CONNECTION_STACK_LIMIT),
@@ -293,6 +296,7 @@
     port_(port),
     threadManager_(threadManager),
     eventBase_(NULL),
+    ownEventBase_(false),
     numTConnections_(0),
     numActiveProcessors_(0),
     connectionStackLimit_(CONNECTION_STACK_LIMIT),
@@ -704,8 +708,10 @@
    * Register the core libevent events onto the proper base.
    *
    * @param base pointer to the event base to be initialized.
+   * @param ownEventBase if true, this server is responsible for
+   * freeing the event base memory.
    */
-  void registerEvents(event_base* base);
+  void registerEvents(event_base* base, bool ownEventBase = true);
 
   /**
    * Main workhorse function, starts up the server listening on a port and
