diff options
author | Marc Laukien <marc@zeroc.com> | 2002-04-06 03:07:48 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2002-04-06 03:07:48 +0000 |
commit | 1436dfb57e2232afaad32c9b0b845c162f544584 (patch) | |
tree | 828658d86aeb9bb1f404ac34f77ae20cd863e379 /cpp/src/Ice/UdpTransceiver.cpp | |
parent | fixes (diff) | |
download | ice-1436dfb57e2232afaad32c9b0b845c162f544584.tar.bz2 ice-1436dfb57e2232afaad32c9b0b845c162f544584.tar.xz ice-1436dfb57e2232afaad32c9b0b845c162f544584.zip |
fixes to collocation detection; removed INADDR_ANY; other fixes
Diffstat (limited to 'cpp/src/Ice/UdpTransceiver.cpp')
-rw-r--r-- | cpp/src/Ice/UdpTransceiver.cpp | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp index 5cb5855f186..88770e74a19 100644 --- a/cpp/src/Ice/UdpTransceiver.cpp +++ b/cpp/src/Ice/UdpTransceiver.cpp @@ -148,18 +148,9 @@ IceInternal::UdpTransceiver::toString() const bool IceInternal::UdpTransceiver::equivalent(const string& host, int port) const { - assert(_incoming); // This equivalence test is only valid for incoming connections. - struct sockaddr_in addr; - getAddress(host.c_str(), port, addr); - if (addr.sin_addr.s_addr == htonl(INADDR_LOOPBACK)) - { - return port == ntohs(_addr.sin_port); - } - - struct sockaddr_in localAddr; - getLocalAddress(ntohs(_addr.sin_port), localAddr); - return memcmp(&addr, &localAddr, sizeof(struct sockaddr_in)) == 0; + getAddress(host, port, addr); + return memcmp(&addr, &_addr, sizeof(struct sockaddr_in)) == 0; } int @@ -174,9 +165,7 @@ IceInternal::UdpTransceiver::setProtocolName(const string& protocolName) _protocolName = protocolName; } -IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, - const string& host, - int port, +IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const string& host, int port, const string& protocolName) : _instance(instance), _traceLevels(instance->traceLevels()), @@ -187,9 +176,8 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, { try { - getAddress(host.c_str(), port, _addr); - _fd = createSocket(true); + getAddress(host, port, _addr); doConnect(_fd, _addr, -1); _connect = false; // We're connected now @@ -206,8 +194,8 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, } } -IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, int port, bool connect, - const string& protocolName) : +IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const string& host, int port, + bool connect, const string& protocolName) : _instance(instance), _traceLevels(instance->traceLevels()), _logger(instance->logger()), @@ -217,12 +205,8 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, int por { try { - memset(&_addr, 0, sizeof(_addr)); - _addr.sin_family = AF_INET; - _addr.sin_port = htons(port); - _addr.sin_addr.s_addr = htonl(INADDR_ANY); - _fd = createSocket(true); + getAddress(host, port, _addr); doBind(_fd, _addr); if (_traceLevels->network >= 1) |