diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/Ice/Network.cpp | 34 | ||||
-rw-r--r-- | cpp/src/Ice/Network.h | 6 | ||||
-rw-r--r-- | cpp/src/Ice/TcpAcceptor.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/TcpAcceptor.h | 9 | ||||
-rw-r--r-- | cpp/src/Ice/TcpConnector.h | 2 | ||||
-rw-r--r-- | cpp/src/Ice/UdpTransceiver.cpp | 11 | ||||
-rw-r--r-- | cpp/src/Ice/UdpTransceiver.h | 4 | ||||
-rw-r--r-- | cpp/src/IceSSL/AcceptorI.cpp | 4 | ||||
-rw-r--r-- | cpp/src/IceSSL/AcceptorI.h | 4 |
9 files changed, 40 insertions, 40 deletions
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 3bbe962b268..04ed8aeb3c7 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -264,9 +264,11 @@ getLocalAddresses(ProtocolSupport protocol) return result; } -void -getAddressImpl(const string& host, int port, struct sockaddr_storage& addr, ProtocolSupport protocol, bool server) +struct sockaddr_storage +getAddressImpl(const string& host, int port, ProtocolSupport protocol, bool server) { + struct sockaddr_storage addr; + // // We now use getaddrinfo() on Windows. // @@ -366,6 +368,7 @@ getAddressImpl(const string& host, int port, struct sockaddr_storage& addr, Prot throw ex; } freeaddrinfo(info); + return addr; } bool @@ -373,8 +376,7 @@ isWildcard(const string& host, ProtocolSupport protocol) { try { - sockaddr_storage addr; - getAddressImpl(host, 0, addr, protocol, false); + sockaddr_storage addr = getAddressImpl(host, 0, protocol, false); if(addr.ss_family == AF_INET) { struct sockaddr_in* addrin = reinterpret_cast<sockaddr_in*>(&addr); @@ -937,8 +939,7 @@ IceInternal::setMcastGroup(SOCKET fd, const struct sockaddr_storage& group, cons mreq.imr_interface = getInterfaceAddress(interface); if(mreq.imr_interface.s_addr == INADDR_ANY) { - struct sockaddr_storage addr; - getAddressForServer(interface, 0, addr, EnableIPv4); + struct sockaddr_storage addr = getAddressForServer(interface, 0, EnableIPv4); mreq.imr_interface = reinterpret_cast<const struct sockaddr_in*>(&addr)->sin_addr; } } @@ -990,8 +991,7 @@ IceInternal::setMcastInterface(SOCKET fd, const string& interface, bool IPv4) struct in_addr iface = getInterfaceAddress(interface); if(iface.s_addr == INADDR_ANY) { - struct sockaddr_storage addr; - getAddressForServer(interface, 0, addr, EnableIPv4); + struct sockaddr_storage addr = getAddressForServer(interface, 0, EnableIPv4); iface = reinterpret_cast<const struct sockaddr_in*>(&addr)->sin_addr; } rc = setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, (char*)&iface, int(sizeof(iface))); @@ -1075,7 +1075,7 @@ IceInternal::doBind(SOCKET fd, struct sockaddr_storage& addr) size = 0; // Keep the compiler happy. } - if(bind(fd, reinterpret_cast<struct sockaddr*>(&addr), size) == SOCKET_ERROR) + if(bind(fd, reinterpret_cast<const struct sockaddr*>(&addr), size) == SOCKET_ERROR) { closeSocketNoThrow(fd); SocketException ex(__FILE__, __LINE__); @@ -1111,7 +1111,7 @@ repeatListen: } bool -IceInternal::doConnect(SOCKET fd, struct sockaddr_storage& addr) +IceInternal::doConnect(SOCKET fd, const struct sockaddr_storage& addr) { repeatConnect: int size; @@ -1129,7 +1129,7 @@ repeatConnect: size = 0; // Keep the compiler happy. } - if(::connect(fd, reinterpret_cast<struct sockaddr*>(&addr), size) == SOCKET_ERROR) + if(::connect(fd, reinterpret_cast<const struct sockaddr*>(&addr), size) == SOCKET_ERROR) { if(interrupted()) { @@ -1278,16 +1278,16 @@ repeatAccept: return ret; } -void -IceInternal::getAddressForServer(const string& host, int port, struct sockaddr_storage& addr, ProtocolSupport protocol) +struct sockaddr_storage +IceInternal::getAddressForServer(const string& host, int port, ProtocolSupport protocol) { - getAddressImpl(host, port, addr, protocol, true); + return getAddressImpl(host, port, protocol, true); } -void -IceInternal::getAddress(const string& host, int port, struct sockaddr_storage& addr, ProtocolSupport protocol) +struct sockaddr_storage +IceInternal::getAddress(const string& host, int port, ProtocolSupport protocol) { - getAddressImpl(host, port, addr, protocol, false); + return getAddressImpl(host, port, protocol, false); } vector<struct sockaddr_storage> diff --git a/cpp/src/Ice/Network.h b/cpp/src/Ice/Network.h index 8016c05b741..90e8e5e2455 100644 --- a/cpp/src/Ice/Network.h +++ b/cpp/src/Ice/Network.h @@ -99,12 +99,12 @@ ICE_API void setReuseAddress(SOCKET, bool); ICE_API void doBind(SOCKET, struct sockaddr_storage&); ICE_API void doListen(SOCKET, int); -ICE_API bool doConnect(SOCKET, struct sockaddr_storage&); +ICE_API bool doConnect(SOCKET, const struct sockaddr_storage&); ICE_API void doFinishConnect(SOCKET); ICE_API SOCKET doAccept(SOCKET); -ICE_API void getAddressForServer(const std::string&, int, struct sockaddr_storage&, ProtocolSupport); -ICE_API void getAddress(const std::string&, int, struct sockaddr_storage&, ProtocolSupport); +ICE_API struct sockaddr_storage getAddressForServer(const std::string&, int, ProtocolSupport); +ICE_API struct sockaddr_storage getAddress(const std::string&, int, ProtocolSupport); ICE_API std::vector<struct sockaddr_storage> getAddresses(const std::string&, int, ProtocolSupport, bool); ICE_API int compareAddress(const struct sockaddr_storage&, const struct sockaddr_storage&); diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp index aab7a740320..18d99100182 100644 --- a/cpp/src/Ice/TcpAcceptor.cpp +++ b/cpp/src/Ice/TcpAcceptor.cpp @@ -91,7 +91,8 @@ IceInternal::TcpAcceptor::effectivePort() const IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& host, int port) : _instance(instance), _traceLevels(instance->traceLevels()), - _logger(instance->initializationData().logger) + _logger(instance->initializationData().logger), + _addr(getAddressForServer(host, port, instance->protocolSupport())) { #ifdef SOMAXCONN _backlog = instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.TCP.Backlog", SOMAXCONN); @@ -101,7 +102,6 @@ IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& try { - getAddressForServer(host, port, _addr, _instance->protocolSupport()); _fd = createSocket(false, _addr.ss_family); setBlock(_fd, false); setTcpBufSize(_fd, _instance->initializationData().properties, _logger); @@ -125,7 +125,7 @@ IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& Trace out(_logger, _traceLevels->networkCat); out << "attempting to bind to tcp socket " << toString(); } - doBind(_fd, _addr); + doBind(_fd, const_cast<struct sockaddr_storage&>(_addr)); } catch(...) { diff --git a/cpp/src/Ice/TcpAcceptor.h b/cpp/src/Ice/TcpAcceptor.h index 4971f5df49a..7ef67d0a496 100644 --- a/cpp/src/Ice/TcpAcceptor.h +++ b/cpp/src/Ice/TcpAcceptor.h @@ -43,12 +43,13 @@ private: virtual ~TcpAcceptor(); friend class TcpEndpointI; - InstancePtr _instance; - TraceLevelsPtr _traceLevels; - ::Ice::LoggerPtr _logger; + const InstancePtr _instance; + const TraceLevelsPtr _traceLevels; + const ::Ice::LoggerPtr _logger; + const struct sockaddr_storage _addr; + SOCKET _fd; int _backlog; - struct sockaddr_storage _addr; }; } diff --git a/cpp/src/Ice/TcpConnector.h b/cpp/src/Ice/TcpConnector.h index c38d3eb9b95..8da7c3536bd 100644 --- a/cpp/src/Ice/TcpConnector.h +++ b/cpp/src/Ice/TcpConnector.h @@ -47,7 +47,7 @@ private: const InstancePtr _instance; const TraceLevelsPtr _traceLevels; const ::Ice::LoggerPtr _logger; - struct sockaddr_storage _addr; + const struct sockaddr_storage _addr; const Ice::Int _timeout; const std::string _connectionId; }; diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp index 66168b1779c..830a14b575c 100644 --- a/cpp/src/Ice/UdpTransceiver.cpp +++ b/cpp/src/Ice/UdpTransceiver.cpp @@ -341,13 +341,13 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s _logger(instance->initializationData().logger), _stats(instance->initializationData().stats), _incoming(true), - _mcastServer(false), + _addr(getAddressForServer(host, port, instance->protocolSupport())), + _mcastServer(isMulticast(_addr)), _connect(connect), _warn(instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0) { try { - getAddressForServer(host, port, _addr, instance->protocolSupport()); _fd = createSocket(true, _addr.ss_family); setBufSize(instance); setBlock(_fd, false); @@ -367,13 +367,12 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s // so we bind to INADDR_ANY (0.0.0.0) instead. // struct sockaddr_storage addr; - getAddressForServer("", getPort(_addr), addr, _addr.ss_family == AF_INET ? EnableIPv4 : EnableIPv6); + addr = getAddressForServer("", getPort(_addr), _addr.ss_family == AF_INET ? EnableIPv4 : EnableIPv6); doBind(_fd, addr); #else - doBind(_fd, _addr); + doBind(_fd, const_cast<struct sockaddr_storage&>(_addr)); #endif setMcastGroup(_fd, _addr, mcastInterface); - _mcastServer = true; } else { @@ -392,7 +391,7 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s // setReuseAddress(_fd, true); #endif - doBind(_fd, _addr); + doBind(_fd, const_cast<struct sockaddr_storage&>(_addr)); } if(_traceLevels->network >= 1) diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h index 6a3e5a9b654..05089f8002f 100644 --- a/cpp/src/Ice/UdpTransceiver.h +++ b/cpp/src/Ice/UdpTransceiver.h @@ -62,10 +62,10 @@ private: const Ice::LoggerPtr _logger; const Ice::StatsPtr _stats; const bool _incoming; + const sockaddr_storage _addr; + const bool _mcastServer; SOCKET _fd; - struct sockaddr_storage _addr; - bool _mcastServer; #ifdef _WIN32 fd_set _rFdSet; fd_set _wFdSet; diff --git a/cpp/src/IceSSL/AcceptorI.cpp b/cpp/src/IceSSL/AcceptorI.cpp index d354532f5d7..5002135cc1e 100644 --- a/cpp/src/IceSSL/AcceptorI.cpp +++ b/cpp/src/IceSSL/AcceptorI.cpp @@ -134,7 +134,8 @@ IceSSL::AcceptorI::effectivePort() const IceSSL::AcceptorI::AcceptorI(const InstancePtr& instance, const string& adapterName, const string& host, int port) : _instance(instance), _adapterName(adapterName), - _logger(instance->communicator()->getLogger()) + _logger(instance->communicator()->getLogger()), + _addr(IceInternal::getAddressForServer(host, port, instance->protocolSupport())) { #ifdef SOMAXCONN _backlog = instance->communicator()->getProperties()->getPropertyAsIntWithDefault("Ice.TCP.Backlog", SOMAXCONN); @@ -144,7 +145,6 @@ IceSSL::AcceptorI::AcceptorI(const InstancePtr& instance, const string& adapterN try { - IceInternal::getAddressForServer(host, port, _addr, _instance->protocolSupport()); _fd = IceInternal::createSocket(false, _addr.ss_family); IceInternal::setBlock(_fd, false); IceInternal::setTcpBufSize(_fd, _instance->communicator()->getProperties(), _logger); diff --git a/cpp/src/IceSSL/AcceptorI.h b/cpp/src/IceSSL/AcceptorI.h index afcb6b6abbe..76c218139de 100644 --- a/cpp/src/IceSSL/AcceptorI.h +++ b/cpp/src/IceSSL/AcceptorI.h @@ -45,10 +45,10 @@ private: const InstancePtr _instance; const std::string _adapterName; - Ice::LoggerPtr _logger; + const Ice::LoggerPtr _logger; + struct sockaddr_storage _addr; SOCKET _fd; int _backlog; - struct sockaddr_storage _addr; }; } |