summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcs/src/Ice/ConnectionI.cs26
-rwxr-xr-xcs/src/Ice/ThreadPool.cs23
-rw-r--r--java/src/Ice/ConnectionI.java39
-rw-r--r--java/src/IceInternal/ThreadPool.java25
4 files changed, 103 insertions, 10 deletions
diff --git a/cs/src/Ice/ConnectionI.cs b/cs/src/Ice/ConnectionI.cs
index f4797832ebe..9fbe39e9ae1 100755
--- a/cs/src/Ice/ConnectionI.cs
+++ b/cs/src/Ice/ConnectionI.cs
@@ -1124,10 +1124,13 @@ namespace Ice
{
IceInternal.TraceUtil.traceHeader("received close connection", stream, _logger,
_traceLevels);
- if(_endpoint.datagram() && _warn)
+ if(_endpoint.datagram())
{
- _logger.warning("ignoring close connection message for datagram connection:\n"
- + _desc);
+ if(_warn)
+ {
+ _logger.warning("ignoring close connection message for datagram connection:\n"
+ + _desc);
+ }
}
else
{
@@ -1221,11 +1224,26 @@ namespace Ice
}
}
}
- catch(LocalException ex)
+ catch(SocketException ex)
{
setState(StateClosed, ex);
return;
}
+ catch(LocalException ex)
+ {
+ if(_endpoint.datagram())
+ {
+ if(_warn)
+ {
+ _logger.warning("datagram connection exception:\n" + ex + _desc);
+ }
+ }
+ else
+ {
+ setState(StateClosed, ex);
+ }
+ return;
+ }
}
//
diff --git a/cs/src/Ice/ThreadPool.cs b/cs/src/Ice/ThreadPool.cs
index 9159ff4e05d..790cac8edb8 100755
--- a/cs/src/Ice/ThreadPool.cs
+++ b/cs/src/Ice/ThreadPool.cs
@@ -558,7 +558,7 @@ namespace IceInternal
{
continue;
}
- catch(Ice.LocalException ex)
+ catch(Ice.SocketException ex)
{
#if TRACE_EXCEPTION
trace("informing handler (" + handler.GetType().FullName + ") about "
@@ -568,6 +568,27 @@ namespace IceInternal
handler.exception(ex);
continue;
}
+ catch(Ice.LocalException ex)
+ {
+ if(handler.datagram())
+ {
+ if(_instance.properties().getPropertyAsInt("Ice.Warn.Connections") > 0)
+ {
+ _instance.logger().warning("datagram connection exception:\n" + ex +
+ handler.ToString());
+ }
+ }
+ else
+ {
+ #if TRACE_EXCEPTION
+ trace("informing handler (" + handler.GetType().FullName + ") about "
+ + ex.GetType().FullName + " exception " + ex);
+ #endif
+
+ handler.exception(ex);
+ }
+ continue;
+ }
stream.swap(handler._stream);
Debug.Assert(stream.pos() == stream.size());
diff --git a/java/src/Ice/ConnectionI.java b/java/src/Ice/ConnectionI.java
index bb2683af69e..9ac68f68e65 100644
--- a/java/src/Ice/ConnectionI.java
+++ b/java/src/Ice/ConnectionI.java
@@ -1800,9 +1800,12 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne
case IceInternal.Protocol.closeConnectionMsg:
{
IceInternal.TraceUtil.traceHeader("received close connection", info.stream, _logger, _traceLevels);
- if(_endpoint.datagram() && _warn)
+ if(_endpoint.datagram())
{
- _logger.warning("ignoring close connection message for datagram connection:\n" + _desc);
+ if(_warn)
+ {
+ _logger.warning("ignoring close connection message for datagram connection:\n" + _desc);
+ }
}
else
{
@@ -1896,10 +1899,24 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne
}
}
}
- catch(LocalException ex)
+ catch(SocketException ex)
{
setState(StateClosed, ex);
}
+ catch(LocalException ex)
+ {
+ if(_endpoint.datagram())
+ {
+ if(_warn)
+ {
+ _logger.warning("udp connection exception:\n" + ex + _desc);
+ }
+ }
+ else
+ {
+ setState(StateClosed, ex);
+ }
+ }
}
private void
@@ -2157,10 +2174,24 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne
{
continue;
}
- catch(LocalException ex)
+ catch(SocketException ex)
{
exception(ex);
}
+ catch(LocalException ex)
+ {
+ if(_endpoint.datagram())
+ {
+ if(_warn)
+ {
+ _logger.warning("udp connection exception:\n" + ex + _desc);
+ }
+ }
+ else
+ {
+ exception(ex);
+ }
+ }
MessageInfo info = new MessageInfo(stream);
diff --git a/java/src/IceInternal/ThreadPool.java b/java/src/IceInternal/ThreadPool.java
index 116a22404b1..dafe47b8a21 100644
--- a/java/src/IceInternal/ThreadPool.java
+++ b/java/src/IceInternal/ThreadPool.java
@@ -678,7 +678,7 @@ public final class ThreadPool
{
continue;
}
- catch(Ice.LocalException ex)
+ catch(Ice.SocketException ex)
{
if(TRACE_EXCEPTION)
{
@@ -690,6 +690,29 @@ public final class ThreadPool
handler.exception(ex);
continue;
}
+ catch(Ice.LocalException ex)
+ {
+ if(handler.datagram())
+ {
+ if(_instance.properties().getPropertyAsInt("Ice.Warn.Connections") > 0)
+ {
+ _instance.logger().warning("datagram connection exception:\n" + ex +
+ handler.toString());
+ }
+ }
+ else
+ {
+ if(TRACE_EXCEPTION)
+ {
+ trace("informing handler (" + handler.getClass().getName() +
+ ") about exception " + ex);
+ ex.printStackTrace();
+ }
+
+ handler.exception(ex);
+ }
+ continue;
+ }
stream.swap(handler._stream);
assert(stream.pos() == stream.size());