From: Roger Meier Date: Wed, 11 Apr 2012 21:48:56 +0000 (+0000) Subject: THRIFT-1563 thrift: make serve() throw an exception if it fails X-Git-Tag: 0.9.1~412 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=d8f50f3ffedf020db94de9a915481effd9ae5162;p=common%2Fthrift.git 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 1ade8950..bd76cfcf 100644 --- a/lib/cpp/src/server/TNonblockingServer.cpp +++ b/lib/cpp/src/server/TNonblockingServer.cpp @@ -1024,9 +1024,8 @@ void TNonblockingServer::createAndListenOnSocket() { // 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 @@ void TNonblockingServer::createAndListenOnSocket() { 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 5def0e42..344945b4 100644 --- a/lib/cpp/src/server/TSimpleServer.cpp +++ b/lib/cpp/src/server/TSimpleServer.cpp @@ -42,14 +42,8 @@ void TSimpleServer::serve() { shared_ptr inputProtocol; shared_ptr 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 ec30d765..fe58ff3e 100644 --- a/lib/cpp/src/server/TThreadPoolServer.cpp +++ b/lib/cpp/src/server/TThreadPoolServer.cpp @@ -121,14 +121,8 @@ void TThreadPoolServer::serve() { shared_ptr inputProtocol; shared_ptr 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 6b816a4f..e99a9093 100644 --- a/lib/cpp/src/server/TThreadedServer.cpp +++ b/lib/cpp/src/server/TThreadedServer.cpp @@ -139,14 +139,8 @@ void TThreadedServer::serve() { shared_ptr inputProtocol; shared_ptr 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 ec7a3824..edc2cb8c 100644 --- a/lib/cpp/src/transport/TServerSocket.cpp +++ b/lib/cpp/src/transport/TServerSocket.cpp @@ -342,7 +342,8 @@ void TServerSocket::listen() { } GlobalOutput(errbuf); close(); - throw TTransportException(TTransportException::NOT_OPEN, "Could not bind"); + throw TTransportException(TTransportException::NOT_OPEN, "Could not bind", + errno); } // Call listen