summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/include/IceUtil/StringUtil.h6
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp20
-rw-r--r--cpp/src/Ice/TcpAcceptor.cpp21
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp22
-rw-r--r--cpp/src/Ice/UdpTransceiver.h1
-rw-r--r--cpp/src/IceSSL/AcceptorI.cpp24
-rw-r--r--cpp/src/IceUtil/StringUtil.cpp15
-rw-r--r--cs/src/Ice/ObjectAdapterI.cs20
-rw-r--r--cs/src/Ice/TcpAcceptor.cs23
-rw-r--r--cs/src/Ice/UdpTransceiver.cs26
-rw-r--r--cs/src/IceSSL/AcceptorI.cs24
-rw-r--r--java/src/Ice/ObjectAdapterI.java18
-rw-r--r--java/src/IceInternal/TcpAcceptor.java25
-rw-r--r--java/src/IceInternal/UdpTransceiver.java27
-rw-r--r--java/src/IceSSL/AcceptorI.java25
-rw-r--r--java/src/IceUtilInternal/StringUtil.java20
16 files changed, 114 insertions, 203 deletions
diff --git a/cpp/include/IceUtil/StringUtil.h b/cpp/include/IceUtil/StringUtil.h
index 72f061e311e..5ddf12b890d 100644
--- a/cpp/include/IceUtil/StringUtil.h
+++ b/cpp/include/IceUtil/StringUtil.h
@@ -27,7 +27,6 @@ ICE_UTIL_API std::string escapeString(const std::string&, const std::string&);
//
ICE_UTIL_API bool unescapeString(const std::string&, std::string::size_type, std::string::size_type, std::string&);
-
//
// Split a string using the given delimiters. Considers single and double quotes;
// returns false for unbalanced quote, true otherwise.
@@ -35,6 +34,11 @@ ICE_UTIL_API bool unescapeString(const std::string&, std::string::size_type, std
ICE_UTIL_API bool splitString(const std::string&, const std::string&, std::vector<std::string>&);
//
+// Join a list of strings using the given delimiter.
+//
+ICE_UTIL_API std::string joinString(const std::vector<std::string>&, const std::string&);
+
+//
// Trim white space
//
ICE_UTIL_API std::string trim(const std::string&);
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp
index 6f3081d7ae6..926c5ec11f3 100644
--- a/cpp/src/Ice/ObjectAdapterI.cpp
+++ b/cpp/src/Ice/ObjectAdapterI.cpp
@@ -1199,25 +1199,17 @@ ObjectAdapterI::parsePublishedEndpoints()
{
//
// If the PublishedEndpoints property isn't set, we compute the published enpdoints
- // from the OA endpoints.
+ // from the OA endpoints, expanding any endpoints that may be listening on INADDR_ANY
+ // to include actual addresses in the published endpoints.
//
- transform(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
- back_inserter(endpoints), Ice::constMemFun(&IncomingConnectionFactory::endpoint));
-
- //
- // Expand any endpoints that may be listening on INADDR_ANY to include actual
- // addresses in the published endpoints.
- //
- vector<EndpointIPtr> expandedEndpoints;
- for(unsigned int i = 0; i < endpoints.size(); ++i)
+ for(unsigned int i = 0; i < _incomingConnectionFactories.size(); ++i)
{
- vector<EndpointIPtr> endps = endpoints[i]->expand();
- expandedEndpoints.insert(expandedEndpoints.end(), endps.begin(), endps.end());
+ vector<EndpointIPtr> endps = _incomingConnectionFactories[i]->endpoint()->expand();
+ endpoints.insert(endpoints.end(), endps.begin(), endps.end());
}
- endpoints = expandedEndpoints;
}
- if(_instance->traceLevels()->network >= 3)
+ if(_instance->traceLevels()->network >= 1)
{
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
out << "published endpoints for object adapter `" << getName() << "':\n";
diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp
index 453d0cbccc1..1b0e4251ba5 100644
--- a/cpp/src/Ice/TcpAcceptor.cpp
+++ b/cpp/src/Ice/TcpAcceptor.cpp
@@ -15,6 +15,7 @@
#include <Ice/Network.h>
#include <Ice/Exception.h>
#include <Ice/Properties.h>
+#include <IceUtil/StringUtil.h>
#ifdef ICE_USE_IOCP
# include <Mswsock.h>
@@ -71,22 +72,12 @@ IceInternal::TcpAcceptor::listen()
Trace out(_logger, _traceLevels->networkCat);
out << "accepting tcp connections at " << toString();
- if(_traceLevels->network >= 3)
+ vector<string> interfaces =
+ getHostsForEndpointExpand(inetAddrToString(_addr), _instance->protocolSupport(), true);
+ if(!interfaces.empty())
{
- vector<string> interfaces =
- getHostsForEndpointExpand(inetAddrToString(_addr), _instance->protocolSupport(), true);
- if(!interfaces.empty())
- {
- out << "\nlocal interfaces: ";
- for(unsigned int i = 0; i < interfaces.size(); ++i)
- {
- if(i != 0)
- {
- out << ", ";
- }
- out << interfaces[i];
- }
- }
+ out << "\nlocal interfaces: ";
+ out << IceUtilInternal::joinString(interfaces, ", ");
}
}
}
diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp
index 30e4f7a8c07..8196391e00b 100644
--- a/cpp/src/Ice/UdpTransceiver.cpp
+++ b/cpp/src/Ice/UdpTransceiver.cpp
@@ -24,6 +24,7 @@
#include <Ice/Network.h>
#include <Ice/LocalException.h>
#include <Ice/Properties.h>
+#include <IceUtil/StringUtil.h>
using namespace std;
using namespace Ice;
@@ -475,7 +476,6 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s
_traceLevels(instance->traceLevels()),
_logger(instance->initializationData().logger),
_stats(instance->initializationData().stats),
- _protocolSupport(instance->protocolSupport()),
_incoming(false),
_addr(addr),
_connect(true),
@@ -515,7 +515,6 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s
_traceLevels(instance->traceLevels()),
_logger(instance->initializationData().logger),
_stats(instance->initializationData().stats),
- _protocolSupport(instance->protocolSupport()),
_incoming(true),
_addr(getAddressForServer(host, port, instance->protocolSupport())),
_connect(connect),
@@ -584,21 +583,12 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s
Trace out(_logger, _traceLevels->networkCat);
out << "starting to receive udp packets\n" << toString();
- if(_traceLevels->network >= 3)
+ vector<string> interfaces =
+ getHostsForEndpointExpand(inetAddrToString(_addr), instance->protocolSupport(), true);
+ if(!interfaces.empty())
{
- vector<string> interfaces = getHostsForEndpointExpand(inetAddrToString(_addr), _protocolSupport, true);
- if(!interfaces.empty())
- {
- out << "\nlocal interfaces: ";
- for(unsigned int i = 0; i < interfaces.size(); ++i)
- {
- if(i != 0)
- {
- out << ", ";
- }
- out << interfaces[i];
- }
- }
+ out << "\nlocal interfaces: ";
+ out << IceUtilInternal::joinString(interfaces, ", ");
}
}
}
diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h
index df86f0c9e9c..4eb1a14bfbe 100644
--- a/cpp/src/Ice/UdpTransceiver.h
+++ b/cpp/src/Ice/UdpTransceiver.h
@@ -72,7 +72,6 @@ private:
const TraceLevelsPtr _traceLevels;
const Ice::LoggerPtr _logger;
const Ice::StatsPtr _stats;
- const ProtocolSupport _protocolSupport;
const bool _incoming;
const struct sockaddr_storage _addr;
struct sockaddr_storage _mcastAddr;
diff --git a/cpp/src/IceSSL/AcceptorI.cpp b/cpp/src/IceSSL/AcceptorI.cpp
index 005ce765e74..c82a77dc4dc 100644
--- a/cpp/src/IceSSL/AcceptorI.cpp
+++ b/cpp/src/IceSSL/AcceptorI.cpp
@@ -18,6 +18,7 @@
#include <Ice/LoggerUtil.h>
#include <Ice/Network.h>
#include <Ice/Properties.h>
+#include <IceUtil/StringUtil.h>
#ifdef ICE_USE_IOCP
# include <Mswsock.h>
@@ -75,25 +76,14 @@ IceSSL::AcceptorI::listen()
Trace out(_logger, _instance->networkTraceCategory());
out << "accepting ssl connections at " << toString();
- if(_instance->networkTraceLevel() >= 3)
+ vector<string> interfaces =
+ IceInternal::getHostsForEndpointExpand(IceInternal::inetAddrToString(_addr), _instance->protocolSupport(),
+ true);
+ if(!interfaces.empty())
{
- vector<string> interfaces =
- IceInternal::getHostsForEndpointExpand(IceInternal::inetAddrToString(_addr),
- _instance->protocolSupport(), true);
- if(!interfaces.empty())
- {
- out << "\nlocal interfaces: ";
- for(unsigned int i = 0; i < interfaces.size(); ++i)
- {
- if(i != 0)
- {
- out << ", ";
- }
- out << interfaces[i];
- }
- }
+ out << "\nlocal interfaces: ";
+ out << IceUtilInternal::joinString(interfaces, ", ");
}
-
}
}
diff --git a/cpp/src/IceUtil/StringUtil.cpp b/cpp/src/IceUtil/StringUtil.cpp
index b83d6dc8a79..2b79f251360 100644
--- a/cpp/src/IceUtil/StringUtil.cpp
+++ b/cpp/src/IceUtil/StringUtil.cpp
@@ -369,6 +369,21 @@ IceUtilInternal::splitString(const string& str, const string& delim, vector<stri
return true;
}
+string
+IceUtilInternal::joinString(const std::vector<std::string>& values, const std::string& delimiter)
+{
+ ostringstream out;
+ for(unsigned int i = 0; i < values.size(); i++)
+ {
+ if(i != 0)
+ {
+ out << delimiter;
+ }
+ out << values[i];
+ }
+ return out.str();
+}
+
//
// Trim white space (" \t\r\n")
//
diff --git a/cs/src/Ice/ObjectAdapterI.cs b/cs/src/Ice/ObjectAdapterI.cs
index 0bedac3b27a..a2149e5ad8e 100644
--- a/cs/src/Ice/ObjectAdapterI.cs
+++ b/cs/src/Ice/ObjectAdapterI.cs
@@ -1233,27 +1233,17 @@ namespace Ice
{
//
// If the PublishedEndpoints property isn't set, we compute the published enpdoints
- // from the OA endpoints.
+ // from the OA endpoints, expanding any endpoints that may be listening on INADDR_ANY
+ // to include actual addresses in the published endpoints.
//
foreach(IceInternal.IncomingConnectionFactory factory in _incomingConnectionFactories)
{
- endpoints.Add(factory.endpoint());
+ endpoints.AddRange(factory.endpoint().expand());
}
-
- //
- // Expand any endpoints that may be listening on INADDR_ANY to
- // include actual addresses in the published endpoints.
- //
- List<IceInternal.EndpointI> expandedEndpoints = new List<IceInternal.EndpointI>();
- foreach(IceInternal.EndpointI endp in endpoints)
- {
- expandedEndpoints.AddRange(endp.expand());
- }
- endpoints = expandedEndpoints;
}
- if(instance_.traceLevels().network >= 3)
- {
+ if(instance_.traceLevels().network >= 1)
+ {
StringBuilder s = new StringBuilder("published endpoints for object adapter `");
s.Append(_name);
s.Append("':\n");
diff --git a/cs/src/Ice/TcpAcceptor.cs b/cs/src/Ice/TcpAcceptor.cs
index 43c8b651597..d87c6220c16 100644
--- a/cs/src/Ice/TcpAcceptor.cs
+++ b/cs/src/Ice/TcpAcceptor.cs
@@ -41,24 +41,13 @@ namespace IceInternal
{
StringBuilder s = new StringBuilder("accepting tcp connections at ");
s.Append(ToString());
- if(_traceLevels.network >= 3)
+
+ List<string> interfaces =
+ Network.getHostsForEndpointExpand(_addr.Address.ToString(), instance_.protocolSupport(), true);
+ if(interfaces.Count != 0)
{
- List<string> interfaces =
- Network.getHostsForEndpointExpand(_addr.Address.ToString(), instance_.protocolSupport(), true);
- if(interfaces.Count != 0)
- {
- s.Append("\nlocal interfaces: ");
- bool first = true;
- foreach(string iface in interfaces)
- {
- if(!first)
- {
- s.Append(", ");
- }
- s.Append(iface);
- first = false;
- }
- }
+ s.Append("\nlocal interfaces: ");
+ s.Append(String.Join(", ", interfaces.ToArray()));
}
_logger.trace(_traceLevels.networkCat, s.ToString());
}
diff --git a/cs/src/Ice/UdpTransceiver.cs b/cs/src/Ice/UdpTransceiver.cs
index 4f5b34a21fa..808b7bf4f95 100644
--- a/cs/src/Ice/UdpTransceiver.cs
+++ b/cs/src/Ice/UdpTransceiver.cs
@@ -582,7 +582,6 @@ namespace IceInternal
_traceLevels = instance.traceLevels();
_logger = instance.initializationData().logger;
_stats = instance.initializationData().stats;
- _protocolSupport = instance.protocolSupport();
_warn = instance.initializationData().properties.getPropertyAsInt("Ice.Warn.Datagrams") > 0;
_addr = addr;
_mcastInterface = mcastInterface;
@@ -611,7 +610,6 @@ namespace IceInternal
_traceLevels = instance.traceLevels();
_logger = instance.initializationData().logger;
_stats = instance.initializationData().stats;
- _protocolSupport = instance.protocolSupport();
_warn = instance.initializationData().properties.getPropertyAsInt("Ice.Warn.Datagrams") > 0;
_state = connect ? StateNeedConnect : StateConnected;
_incoming = true;
@@ -672,24 +670,13 @@ namespace IceInternal
{
StringBuilder s = new StringBuilder("starting to receive udp packets\n");
s.Append(ToString());
- if(_traceLevels.network >= 3)
+
+ List<string> interfaces =
+ Network.getHostsForEndpointExpand(_addr.Address.ToString(), instance.protocolSupport(), true);
+ if(interfaces.Count != 0)
{
- List<string> interfaces =
- Network.getHostsForEndpointExpand(_addr.Address.ToString(), _protocolSupport, true);
- if(interfaces.Count != 0)
- {
- s.Append("\nlocal interfaces: ");
- bool first = true;
- foreach(string iface in interfaces)
- {
- if(!first)
- {
- s.Append(", ");
- }
- s.Append(iface);
- first = false;
- }
- }
+ s.Append("\nlocal interfaces: ");
+ s.Append(String.Join(", ", interfaces.ToArray()));
}
_logger.trace(_traceLevels.networkCat, s.ToString());
}
@@ -772,7 +759,6 @@ namespace IceInternal
private TraceLevels _traceLevels;
private Ice.Logger _logger;
private Ice.Stats _stats;
- private int _protocolSupport;
private int _state;
private bool _incoming;
private readonly bool _warn;
diff --git a/cs/src/IceSSL/AcceptorI.cs b/cs/src/IceSSL/AcceptorI.cs
index 62c8847dd45..4d73a1aa66f 100644
--- a/cs/src/IceSSL/AcceptorI.cs
+++ b/cs/src/IceSSL/AcceptorI.cs
@@ -50,24 +50,14 @@ namespace IceSSL
{
StringBuilder s = new StringBuilder("accepting ssl connections at ");
s.Append(ToString());
- if(_instance.networkTraceLevel() >= 3)
+
+ List<string> interfaces =
+ IceInternal.Network.getHostsForEndpointExpand(_addr.Address.ToString(),
+ _instance.protocolSupport(), true);
+ if(interfaces.Count != 0)
{
- List<string> interfaces = IceInternal.Network.getHostsForEndpointExpand(_addr.Address.ToString(),
- _instance.protocolSupport(), true);
- if(interfaces.Count != 0)
- {
- s.Append("\nlocal interfaces: ");
- bool first = true;
- foreach(string iface in interfaces)
- {
- if(!first)
- {
- s.Append(", ");
- }
- s.Append(iface);
- first = false;
- }
- }
+ s.Append("\nlocal interfaces: ");
+ s.Append(String.Join(", ", interfaces.ToArray()));
}
_logger.trace(_instance.networkTraceCategory(), s.ToString());
}
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index 7478f6ffb5d..0737878ca27 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -1209,26 +1209,16 @@ public final class ObjectAdapterI implements ObjectAdapter
{
//
// If the PublishedEndpoints property isn't set, we compute the published enpdoints
- // from the OA endpoints.
+ // from the OA endpoints, expanding any endpoints that may be listening on INADDR_ANY
+ // to include actual addresses in the published endpoints.
//
for(IceInternal.IncomingConnectionFactory factory : _incomingConnectionFactories)
{
- endpoints.add(factory.endpoint());
+ endpoints.addAll(factory.endpoint().expand());
}
-
- //
- // Expand any endpoints that may be listening on INADDR_ANY to
- // include actual addresses in the published endpoints.
- //
- java.util.List<IceInternal.EndpointI> expandedEndpoints = new java.util.ArrayList<IceInternal.EndpointI>();
- for(IceInternal.EndpointI p : endpoints)
- {
- expandedEndpoints.addAll(p.expand());
- }
- endpoints = expandedEndpoints;
}
- if(_instance.traceLevels().network >= 3)
+ if(_instance.traceLevels().network >= 1)
{
StringBuffer s = new StringBuffer("published endpoints for object adapter `");
s.append(_name);
diff --git a/java/src/IceInternal/TcpAcceptor.java b/java/src/IceInternal/TcpAcceptor.java
index 1ecd024c3c9..50f46759f6f 100644
--- a/java/src/IceInternal/TcpAcceptor.java
+++ b/java/src/IceInternal/TcpAcceptor.java
@@ -40,25 +40,14 @@ class TcpAcceptor implements Acceptor
{
StringBuffer s = new StringBuffer("accepting tcp connections at ");
s.append(toString());
- if(_traceLevels.network >= 3)
+
+ java.util.List<String> interfaces =
+ Network.getHostsForEndpointExpand(_addr.getAddress().getHostAddress(), _instance.protocolSupport(),
+ true);
+ if(!interfaces.isEmpty())
{
- java.util.List<String> interfaces =
- Network.getHostsForEndpointExpand(_addr.getAddress().getHostAddress(),
- _instance.protocolSupport(), true);
- if(!interfaces.isEmpty())
- {
- s.append("\nlocal interfaces: ");
- boolean first = true;
- for(String iface : interfaces)
- {
- if(!first)
- {
- s.append(", ");
- }
- s.append(iface);
- first = false;
- }
- }
+ s.append("\nlocal interfaces: ");
+ s.append(IceUtilInternal.StringUtil.joinString(interfaces, ", "));
}
_logger.trace(_traceLevels.networkCat, s.toString());
}
diff --git a/java/src/IceInternal/UdpTransceiver.java b/java/src/IceInternal/UdpTransceiver.java
index 49146a1383a..70533314e95 100644
--- a/java/src/IceInternal/UdpTransceiver.java
+++ b/java/src/IceInternal/UdpTransceiver.java
@@ -257,7 +257,6 @@ final class UdpTransceiver implements Transceiver
_traceLevels = instance.traceLevels();
_logger = instance.initializationData().logger;
_stats = instance.initializationData().stats;
- _protocolSupport = instance.protocolSupport();
_connect = true;
_warn = instance.initializationData().properties.getPropertyAsInt("Ice.Warn.Datagrams") > 0;
_addr = addr;
@@ -295,7 +294,6 @@ final class UdpTransceiver implements Transceiver
_traceLevels = instance.traceLevels();
_logger = instance.initializationData().logger;
_stats = instance.initializationData().stats;
- _protocolSupport = instance.protocolSupport();
_connect = connect;
_warn = instance.initializationData().properties.getPropertyAsInt("Ice.Warn.Datagrams") > 0;
@@ -347,24 +345,14 @@ final class UdpTransceiver implements Transceiver
{
StringBuffer s = new StringBuffer("starting to receive udp packets\n");
s.append(toString());
- if(_traceLevels.network >= 3)
+
+ java.util.List<String> interfaces =
+ Network.getHostsForEndpointExpand(_addr.getAddress().getHostAddress(), instance.protocolSupport(),
+ true);
+ if(!interfaces.isEmpty())
{
- java.util.List<String> interfaces =
- Network.getHostsForEndpointExpand(_addr.getAddress().getHostAddress(), _protocolSupport, true);
- if(!interfaces.isEmpty())
- {
- s.append("\nlocal interfaces: ");
- boolean first = true;
- for(String iface : interfaces)
- {
- if(!first)
- {
- s.append(", ");
- }
- s.append(iface);
- first = false;
- }
- }
+ s.append("\nlocal interfaces: ");
+ s.append(IceUtilInternal.StringUtil.joinString(interfaces, ", "));
}
_logger.trace(_traceLevels.networkCat, s.toString());
}
@@ -550,7 +538,6 @@ final class UdpTransceiver implements Transceiver
private TraceLevels _traceLevels;
private Ice.Logger _logger;
private Ice.Stats _stats;
- private int _protocolSupport;
private boolean _connect;
private final boolean _warn;
private int _rcvSize;
diff --git a/java/src/IceSSL/AcceptorI.java b/java/src/IceSSL/AcceptorI.java
index a422f97a4df..18184b50aa2 100644
--- a/java/src/IceSSL/AcceptorI.java
+++ b/java/src/IceSSL/AcceptorI.java
@@ -40,25 +40,14 @@ final class AcceptorI implements IceInternal.Acceptor
{
StringBuffer s = new StringBuffer("accepting ssl connections at ");
s.append(toString());
- if(_instance.networkTraceLevel() >= 3)
+
+ java.util.List<String> interfaces =
+ IceInternal.Network.getHostsForEndpointExpand(_addr.getAddress().getHostAddress(),
+ _instance.protocolSupport(), true);
+ if(!interfaces.isEmpty())
{
- java.util.List<String> interfaces =
- IceInternal.Network.getHostsForEndpointExpand(_addr.getAddress().getHostAddress(),
- _instance.protocolSupport(), true);
- if(!interfaces.isEmpty())
- {
- s.append("\nlocal interfaces: ");
- boolean first = true;
- for(String iface : interfaces)
- {
- if(!first)
- {
- s.append(", ");
- }
- s.append(iface);
- first = false;
- }
- }
+ s.append("\nlocal interfaces: ");
+ s.append(IceUtilInternal.StringUtil.joinString(interfaces, ", "));
}
_logger.trace(_instance.networkTraceCategory(), s.toString());
}
diff --git a/java/src/IceUtilInternal/StringUtil.java b/java/src/IceUtilInternal/StringUtil.java
index 9ff9d80cfd2..befc624f425 100644
--- a/java/src/IceUtilInternal/StringUtil.java
+++ b/java/src/IceUtilInternal/StringUtil.java
@@ -363,6 +363,26 @@ public final class StringUtil
}
}
+ //
+ // Join a list of strings using the given delimiter.
+ //
+ public static String
+ joinString(java.util.List<String> values, String delimiter)
+ {
+ StringBuffer s = new StringBuffer();
+ boolean first = true;
+ for(String v : values)
+ {
+ if(!first)
+ {
+ s.append(delimiter);
+ }
+ s.append(v);
+ first = false;
+ }
+ return s.toString();
+ }
+
public static int
checkQuote(String s)
{