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 8a14ea5..f9f3e7f 100644
--- a/lib/cpp/src/transport/TServerSocket.cpp
+++ b/lib/cpp/src/transport/TServerSocket.cpp
@@ -106,7 +106,7 @@
}
shared_ptr<TTransport> TServerSocket::acceptImpl() {
- if (serverSocket_ <= 0) {
+ if (serverSocket_ < 0) {
throw TTransportException(TTX_NOT_OPEN, "TServerSocket not listening");
}
@@ -120,7 +120,7 @@
perror("TServerSocket::accept()");
throw TTransportException(TTX_UNKNOWN, "ERROR:" + errno);
}
-
+
shared_ptr<TSocket> 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 de94a7c..6dbfb13 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 <boost/lexical_cast.hpp>
#include <string>
namespace facebook { namespace thrift { namespace transport {
@@ -53,6 +54,15 @@
TTransportExceptionType getType() {
return type_;
}
+
+ virtual const char* what() const throw() {
+ if (message_.empty()) {
+ return (std::string("Default Transport Exception: ") +
+ boost::lexical_cast<std::string>(type_)).c_str();
+ } else {
+ return message_.c_str();
+ }
+ }
protected:
/** Error code */