You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by ro...@apache.org on 2011/06/04 10:57:44 UTC

svn commit: r1131352 - in /thrift/trunk/lib/cpp/src/transport: TServerSocket.cpp TSocket.cpp

Author: roger
Date: Sat Jun  4 08:57:43 2011
New Revision: 1131352

URL: http://svn.apache.org/viewvc?rev=1131352&view=rev
Log:
THRIFT-1196 Unix Domain Socket Support is broken

Modified:
    thrift/trunk/lib/cpp/src/transport/TServerSocket.cpp
    thrift/trunk/lib/cpp/src/transport/TSocket.cpp

Modified: thrift/trunk/lib/cpp/src/transport/TServerSocket.cpp
URL: http://svn.apache.org/viewvc/thrift/trunk/lib/cpp/src/transport/TServerSocket.cpp?rev=1131352&r1=1131351&r2=1131352&view=diff
==============================================================================
--- thrift/trunk/lib/cpp/src/transport/TServerSocket.cpp (original)
+++ thrift/trunk/lib/cpp/src/transport/TServerSocket.cpp Sat Jun  4 08:57:43 2011
@@ -202,7 +202,7 @@ void TServerSocket::listen() {
   #endif // #ifdef TCP_DEFER_ACCEPT
 
   #ifdef IPV6_V6ONLY
-  if (res->ai_family == AF_INET6) {
+  if (res->ai_family == AF_INET6 && path_.empty()) {
     int zero = 0;
     if (-1 == setsockopt(serverSocket_, IPPROTO_IPV6, IPV6_V6ONLY, 
           &zero, sizeof(zero))) {

Modified: thrift/trunk/lib/cpp/src/transport/TSocket.cpp
URL: http://svn.apache.org/viewvc/thrift/trunk/lib/cpp/src/transport/TSocket.cpp?rev=1131352&r1=1131351&r2=1131352&view=diff
==============================================================================
--- thrift/trunk/lib/cpp/src/transport/TSocket.cpp (original)
+++ thrift/trunk/lib/cpp/src/transport/TSocket.cpp Sat Jun  4 08:57:43 2011
@@ -277,7 +277,9 @@ void TSocket::openConnection(struct addr
   // Set socket back to normal mode (blocking)
   fcntl(socket_, F_SETFL, flags);
 
-  setCachedAddress(res->ai_addr, res->ai_addrlen);
+  if (path_.empty()) {
+    setCachedAddress(res->ai_addr, res->ai_addrlen);
+  }
 }
 
 void TSocket::open() {
@@ -561,7 +563,7 @@ void TSocket::setLinger(bool on, int lin
 
 void TSocket::setNoDelay(bool noDelay) {
   noDelay_ = noDelay;
-  if (socket_ < 0) {
+  if (socket_ < 0 || !path_.empty()) {
     return;
   }
 
@@ -641,7 +643,7 @@ string TSocket::getSocketInfo() {
 }
 
 std::string TSocket::getPeerHost() {
-  if (peerHost_.empty()) {
+  if (peerHost_.empty() && path_.empty()) {
     struct sockaddr_storage addr;
     struct sockaddr* addrPtr;
     socklen_t addrLen;
@@ -675,7 +677,7 @@ std::string TSocket::getPeerHost() {
 }
 
 std::string TSocket::getPeerAddress() {
-  if (peerAddress_.empty()) {
+  if (peerAddress_.empty() && path_.empty()) {
     struct sockaddr_storage addr;
     struct sockaddr* addrPtr;
     socklen_t addrLen;
@@ -716,6 +718,10 @@ int TSocket::getPeerPort() {
 }
 
 void TSocket::setCachedAddress(const sockaddr* addr, socklen_t len) {
+  if (!path_.empty()) {
+    return;
+  }
+
   switch (addr->sa_family) {
   case AF_INET:
     if (len == sizeof(sockaddr_in)) {