diff options
author | Matthew Newhook <matthew@zeroc.com> | 2008-05-22 15:23:27 +0800 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2008-05-22 15:23:27 +0800 |
commit | a8ef39d3a0d35aa0391297dc779ede1cf8e9c387 (patch) | |
tree | e98b3fe2f25f39b02249958f8465c9a8dc3bc338 /cpp/src/Ice/Network.cpp | |
parent | cleaning up Make.rules for python (diff) | |
download | ice-a8ef39d3a0d35aa0391297dc779ede1cf8e9c387.tar.bz2 ice-a8ef39d3a0d35aa0391297dc779ede1cf8e9c387.tar.xz ice-a8ef39d3a0d35aa0391297dc779ede1cf8e9c387.zip |
http://bugzilla/bugzilla/show_bug.cgi?id=3222 - import mcast tracing. The effective port may be incorrect under windows.
Diffstat (limited to 'cpp/src/Ice/Network.cpp')
-rw-r--r-- | cpp/src/Ice/Network.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 04ed8aeb3c7..e5811b70a47 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -1057,8 +1057,8 @@ IceInternal::setReuseAddress(SOCKET fd, bool reuse) } } -void -IceInternal::doBind(SOCKET fd, struct sockaddr_storage& addr) +struct sockaddr_storage +IceInternal::doBind(SOCKET fd, const struct sockaddr_storage& addr) { int size; if(addr.ss_family == AF_INET) @@ -1083,13 +1083,15 @@ IceInternal::doBind(SOCKET fd, struct sockaddr_storage& addr) throw ex; } - socklen_t len = static_cast<socklen_t>(sizeof(addr)); + struct sockaddr_storage local; + socklen_t len = static_cast<socklen_t>(sizeof(local)); #ifdef NDEBUG - getsockname(fd, reinterpret_cast<struct sockaddr*>(&addr), &len); + getsockname(fd, reinterpret_cast<struct sockaddr*>(&local), &len); #else - int ret = getsockname(fd, reinterpret_cast<struct sockaddr*>(&addr), &len); + int ret = getsockname(fd, reinterpret_cast<struct sockaddr*>(&local), &len); assert(ret != SOCKET_ERROR); #endif + return local; } void @@ -1511,7 +1513,7 @@ IceInternal::createPipe(SOCKET fds[2]) addrin->sin_port = htons(0); addrin->sin_addr.s_addr = htonl(INADDR_LOOPBACK); - doBind(fd, addr); + addr = doBind(fd, addr); doListen(fd, 1); try |