summaryrefslogtreecommitdiff
path: root/lib/cpp/src/thrift/transport/TServerSocket.cpp
diff options
context:
space:
mode:
authorRoger Meier <roger@apache.org>2013-09-02 20:43:57 +0200
committerRoger Meier <roger@apache.org>2013-09-02 20:43:57 +0200
commit657b933f28ffdaedb49c5a93dc3e0c2ceeae1807 (patch)
tree2815541453fe46e318c5d2f6f992b78d082cee97 /lib/cpp/src/thrift/transport/TServerSocket.cpp
parentacf15dc30429d609735efc7686f197607d8923d1 (diff)
downloadthrift-657b933f28ffdaedb49c5a93dc3e0c2ceeae1807.tar.gz
THRIFT-1481 cpp: Unix domain sockets in C++ do not support the abstract namespace
Patch: Ben Craig
Diffstat (limited to 'lib/cpp/src/thrift/transport/TServerSocket.cpp')
-rwxr-xr-x[-rw-r--r--]lib/cpp/src/thrift/transport/TServerSocket.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/cpp/src/thrift/transport/TServerSocket.cpp b/lib/cpp/src/thrift/transport/TServerSocket.cpp
index 4cecc3bb3..59a088593 100644..100755
--- a/lib/cpp/src/thrift/transport/TServerSocket.cpp
+++ b/lib/cpp/src/thrift/transport/TServerSocket.cpp
@@ -304,21 +304,21 @@ void TServerSocket::listen() {
#ifndef _WIN32
// Unix Domain Socket
- struct sockaddr_un address;
- socklen_t len;
+ struct sockaddr_un address = {0};
+ size_t len = path_.size()+1;
- if (path_.length() > sizeof(address.sun_path)) {
+ if (len > sizeof(address.sun_path)) {
int errno_copy = THRIFT_GET_SOCKET_ERROR;
GlobalOutput.perror("TSocket::listen() Unix Domain socket path too long", errno_copy);
throw TTransportException(TTransportException::NOT_OPEN, " Unix Domain socket path too long");
}
address.sun_family = AF_UNIX;
- THRIFT_SNPRINTF(address.sun_path, sizeof(address.sun_path), "%s", path_.c_str());
- len = sizeof(address);
+ memcpy(address.sun_path, path_.c_str(), len);
+ socklen_t structlen = static_cast<socklen_t>(sizeof(address));
do {
- if (0 == ::bind(serverSocket_, (struct sockaddr *) &address, len)) {
+ if (0 == ::bind(serverSocket_, (struct sockaddr *) &address, structlen)) {
break;
}
// use short circuit evaluation here to only sleep if we need to