THRIFT-1563 thrift: make serve() throw an exception if it fails
Patch: Dave Watson
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1325026 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/cpp/src/server/TNonblockingServer.cpp b/lib/cpp/src/server/TNonblockingServer.cpp
index 1ade895..bd76cfc 100644
--- a/lib/cpp/src/server/TNonblockingServer.cpp
+++ b/lib/cpp/src/server/TNonblockingServer.cpp
@@ -1024,9 +1024,8 @@
// Wildcard address
error = getaddrinfo(NULL, port, &hints, &res0);
if (error) {
- string errStr = "TNonblockingServer::serve() getaddrinfo " + string(gai_strerror(error));
- GlobalOutput(errStr.c_str());
- return;
+ throw TException("TNonblockingServer::serve() getaddrinfo " +
+ string(gai_strerror(error)));
}
// Pick the ipv6 address first since ipv4 addresses can be mapped
@@ -1061,7 +1060,9 @@
if (::bind(s, res->ai_addr, res->ai_addrlen) == -1) {
::close(s);
freeaddrinfo(res0);
- throw TException("TNonblockingServer::serve() bind");
+ throw TTransportException(TTransportException::NOT_OPEN,
+ "TNonblockingServer::serve() bind",
+ errno);
}
// Done with the addr info
diff --git a/lib/cpp/src/server/TSimpleServer.cpp b/lib/cpp/src/server/TSimpleServer.cpp
index 5def0e4..344945b 100644
--- a/lib/cpp/src/server/TSimpleServer.cpp
+++ b/lib/cpp/src/server/TSimpleServer.cpp
@@ -42,14 +42,8 @@
shared_ptr<TProtocol> inputProtocol;
shared_ptr<TProtocol> outputProtocol;
- try {
- // Start the server listening
- serverTransport_->listen();
- } catch (TTransportException& ttx) {
- string errStr = string("TSimpleServer::run() listen(): ") + ttx.what();
- GlobalOutput(errStr.c_str());
- return;
- }
+ // Start the server listening
+ serverTransport_->listen();
// Run the preServe event
if (eventHandler_ != NULL) {
diff --git a/lib/cpp/src/server/TThreadPoolServer.cpp b/lib/cpp/src/server/TThreadPoolServer.cpp
index ec30d76..fe58ff3 100644
--- a/lib/cpp/src/server/TThreadPoolServer.cpp
+++ b/lib/cpp/src/server/TThreadPoolServer.cpp
@@ -121,14 +121,8 @@
shared_ptr<TProtocol> inputProtocol;
shared_ptr<TProtocol> outputProtocol;
- try {
- // Start the server listening
- serverTransport_->listen();
- } catch (TTransportException& ttx) {
- string errStr = string("TThreadPoolServer::run() listen(): ") + ttx.what();
- GlobalOutput(errStr.c_str());
- return;
- }
+ // Start the server listening
+ serverTransport_->listen();
// Run the preServe event
if (eventHandler_ != NULL) {
diff --git a/lib/cpp/src/server/TThreadedServer.cpp b/lib/cpp/src/server/TThreadedServer.cpp
index 6b816a4..e99a909 100644
--- a/lib/cpp/src/server/TThreadedServer.cpp
+++ b/lib/cpp/src/server/TThreadedServer.cpp
@@ -139,14 +139,8 @@
shared_ptr<TProtocol> inputProtocol;
shared_ptr<TProtocol> outputProtocol;
- try {
- // Start the server listening
- serverTransport_->listen();
- } catch (TTransportException& ttx) {
- string errStr = string("TThreadedServer::run() listen(): ") +ttx.what();
- GlobalOutput(errStr.c_str());
- return;
- }
+ // Start the server listening
+ serverTransport_->listen();
// Run the preServe event
if (eventHandler_ != NULL) {
diff --git a/lib/cpp/src/transport/TServerSocket.cpp b/lib/cpp/src/transport/TServerSocket.cpp
index ec7a382..edc2cb8 100644
--- a/lib/cpp/src/transport/TServerSocket.cpp
+++ b/lib/cpp/src/transport/TServerSocket.cpp
@@ -342,7 +342,8 @@
}
GlobalOutput(errbuf);
close();
- throw TTransportException(TTransportException::NOT_OPEN, "Could not bind");
+ throw TTransportException(TTransportException::NOT_OPEN, "Could not bind",
+ errno);
}
// Call listen