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 2013/09/02 20:44:39 UTC
git commit: THRIFT-1481 cpp: Unix domain sockets in C++ do not
support the abstract namespace Patch: Ben Craig
Updated Branches:
refs/heads/master acf15dc30 -> 657b933f2
THRIFT-1481 cpp: Unix domain sockets in C++ do not support the abstract namespace
Patch: Ben Craig
Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/657b933f
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/657b933f
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/657b933f
Branch: refs/heads/master
Commit: 657b933f28ffdaedb49c5a93dc3e0c2ceeae1807
Parents: acf15dc
Author: Roger Meier <ro...@apache.org>
Authored: Mon Sep 2 20:43:57 2013 +0200
Committer: Roger Meier <ro...@apache.org>
Committed: Mon Sep 2 20:43:57 2013 +0200
----------------------------------------------------------------------
lib/cpp/src/thrift/transport/TServerSocket.cpp | 12 ++++++------
lib/cpp/src/thrift/transport/TSocket.cpp | 12 ++++++------
2 files changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/thrift/blob/657b933f/lib/cpp/src/thrift/transport/TServerSocket.cpp
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/transport/TServerSocket.cpp b/lib/cpp/src/thrift/transport/TServerSocket.cpp
old mode 100644
new mode 100755
index 4cecc3b..59a0885
--- 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
http://git-wip-us.apache.org/repos/asf/thrift/blob/657b933f/lib/cpp/src/thrift/transport/TSocket.cpp
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/transport/TSocket.cpp b/lib/cpp/src/thrift/transport/TSocket.cpp
old mode 100644
new mode 100755
index d521bb5..1ea98bd
--- a/lib/cpp/src/thrift/transport/TSocket.cpp
+++ b/lib/cpp/src/thrift/transport/TSocket.cpp
@@ -240,19 +240,19 @@ void TSocket::openConnection(struct addrinfo *res) {
#ifndef _WIN32
- 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::open() 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);
- ret = connect(socket_, (struct sockaddr *) &address, len);
+ memcpy(address.sun_path, path_.c_str(), len);
+ socklen_t structlen = static_cast<socklen_t>(sizeof(address));
+ ret = connect(socket_, (struct sockaddr *) &address, structlen);
#else
GlobalOutput.perror("TSocket::open() Unix Domain socket path not supported on windows", -99);