diff --git a/lib/cpp/src/server/TSimpleServer.cpp b/lib/cpp/src/server/TSimpleServer.cpp
index 1e7e7fb..f7e2673 100644
--- a/lib/cpp/src/server/TSimpleServer.cpp
+++ b/lib/cpp/src/server/TSimpleServer.cpp
@@ -28,8 +28,8 @@
   }
 
   // Fetch client from server
-  try {
-    while (true) {
+  while (true) {
+    try {
       client = serverTransport_->accept();
       inputTransport = inputTransportFactory_->getTransport(client);
       outputTransport = outputTransportFactory_->getTransport(client);
@@ -49,12 +49,26 @@
       }
       inputTransport->close();
       outputTransport->close();
+      client->close();    
+    } catch (TTransportException& ttx) {
+      inputTransport->close();
+      outputTransport->close();
       client->close();
+      cerr << "TServerTransport died on accept: " << ttx.what() << endl;
+      continue;
+    } catch (TException& tx) {
+      inputTransport->close();
+      outputTransport->close();
+      client->close();
+      cerr << "Some kind of accept exception: " << tx.what() << endl;
+      continue;
+    } catch (string s) {
+      inputTransport->close();
+      outputTransport->close();
+      client->close();
+      cerr << "TThreadPoolServer: Unknown exception: " << s << endl;
+      break;
     }
-  } catch (TTransportException& ttx) {
-    cerr << "TServerTransport died on accept: " << ttx.what() << endl;
-  } catch (TException& tx) {
-    cerr << "Some kind of accept exception: " << tx.what() << endl;
   }
 
   // TODO(mcslee): Could this be a timeout case? Or always the real thing?
diff --git a/lib/cpp/src/server/TThreadPoolServer.cpp b/lib/cpp/src/server/TThreadPoolServer.cpp
index 8514d18..ce1b59e 100644
--- a/lib/cpp/src/server/TThreadPoolServer.cpp
+++ b/lib/cpp/src/server/TThreadPoolServer.cpp
@@ -102,8 +102,26 @@
       outputProtocol = outputProtocolFactory_->getProtocol(outputTransport);
 
       // Add to threadmanager pool
-      threadManager_->add(shared_ptr<TThreadPoolServer::Task>(new TThreadPoolServer::Task(processor_, inputProtocol, outputProtocol)));
+      threadManager_->add(shared_ptr<TThreadPoolServer::Task>(new TThreadPoolServer::Task(processor_, 
+                                                                                          inputProtocol, 
+                                                                                          outputProtocol)));
     } catch (TTransportException& ttx) {
+      inputTransport->close();
+      outputTransport->close();
+      client->close();
+      cerr << "TThreadPoolServer: TServerTransport died on accept: " << ttx.what() << endl;
+      continue;
+    } catch (TException& tx) {
+      inputTransport->close();
+      outputTransport->close();
+      client->close();
+      cerr << "TThreadPoolServer: Caught TException: " << tx.what() << endl;
+      continue;
+    } catch (string s) {
+      inputTransport->close();
+      outputTransport->close();
+      client->close();
+      cerr << "TThreadPoolServer: Unknown exception: " << s << endl;
       break;
     }
   }
