From: Martin Kraemer Date: Sat, 3 Feb 2007 01:59:12 +0000 (+0000) Subject: Thrift fixes for Exceptions and TServerSocket X-Git-Tag: 0.2.0~1503 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=10640d8935c62d6ee5684ad4b26b760dc0e424d1;p=common%2Fthrift.git Thrift fixes for Exceptions and TServerSocket Summary: TServerSocket detected file des. 0 as an invalid file des. This has been fixed. Reviewed By: Steve Revert Plan: Revertible Notes: git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664969 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/cpp/src/transport/TServerSocket.cpp b/lib/cpp/src/transport/TServerSocket.cpp index 8a14ea5c..f9f3e7fa 100644 --- a/lib/cpp/src/transport/TServerSocket.cpp +++ b/lib/cpp/src/transport/TServerSocket.cpp @@ -106,7 +106,7 @@ void TServerSocket::listen() { } shared_ptr TServerSocket::acceptImpl() { - if (serverSocket_ <= 0) { + if (serverSocket_ < 0) { throw TTransportException(TTX_NOT_OPEN, "TServerSocket not listening"); } @@ -120,7 +120,7 @@ shared_ptr TServerSocket::acceptImpl() { perror("TServerSocket::accept()"); throw TTransportException(TTX_UNKNOWN, "ERROR:" + errno); } - + shared_ptr client(new TSocket(clientSocket)); if (sendTimeout_ > 0) { client->setSendTimeout(sendTimeout_); diff --git a/lib/cpp/src/transport/TTransportException.h b/lib/cpp/src/transport/TTransportException.h index de94a7c9..6dbfb13b 100644 --- a/lib/cpp/src/transport/TTransportException.h +++ b/lib/cpp/src/transport/TTransportException.h @@ -1,6 +1,7 @@ #ifndef _THRIFT_TRANSPORT_TTRANSPORTEXCEPTION_H_ #define _THRIFT_TRANSPORT_TTRANSPORTEXCEPTION_H_ 1 +#include #include namespace facebook { namespace thrift { namespace transport { @@ -53,6 +54,15 @@ class TTransportException : public facebook::thrift::TException { TTransportExceptionType getType() { return type_; } + + virtual const char* what() const throw() { + if (message_.empty()) { + return (std::string("Default Transport Exception: ") + + boost::lexical_cast(type_)).c_str(); + } else { + return message_.c_str(); + } + } protected: /** Error code */