diff options
| author | Andrew Stitcher <astitcher@apache.org> | 2011-08-12 22:32:25 +0000 |
|---|---|---|
| committer | Andrew Stitcher <astitcher@apache.org> | 2011-08-12 22:32:25 +0000 |
| commit | 2ad73b9bb5ec8461e58dbea9d123761a7bf308dc (patch) | |
| tree | 8ace2518fea6dd55cb87eab7c43d39c47edca2df /cpp/src/qpid/sys/posix | |
| parent | cde4e55e47ae031af23746b45981fd0fd3a40cad (diff) | |
| download | qpid-python-2ad73b9bb5ec8461e58dbea9d123761a7bf308dc.tar.gz | |
QPID-3406: Get IPv6 working on Windows port
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1157274 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys/posix')
| -rw-r--r-- | cpp/src/qpid/sys/posix/Socket.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cpp/src/qpid/sys/posix/Socket.cpp b/cpp/src/qpid/sys/posix/Socket.cpp index b6f3b7addd..0ec5688d07 100644 --- a/cpp/src/qpid/sys/posix/Socket.cpp +++ b/cpp/src/qpid/sys/posix/Socket.cpp @@ -114,6 +114,20 @@ void Socket::createSocket(const SocketAddress& sa) const } } +Socket* Socket::createSameTypeSocket() const { + int& socket = impl->fd; + // Socket currently has no actual socket attached + if (socket == -1) + return new Socket; + + ::sockaddr_storage sa; + ::socklen_t salen = sizeof(sa); + QPID_POSIX_CHECK(::getsockname(socket, (::sockaddr*)&sa, &salen)); + int s = ::socket(sa.ss_family, SOCK_STREAM, 0); // Currently only work with SOCK_STREAM + if (s < 0) throw QPID_POSIX_ERROR(errno); + return new Socket(new IOHandlePrivate(s)); +} + void Socket::setNonblocking() const { int& socket = impl->fd; nonblocking = true; |
