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)) {