diff options
-rwxr-xr-x | cs/src/Ice/ConnectionI.cs | 26 | ||||
-rwxr-xr-x | cs/src/Ice/ThreadPool.cs | 23 | ||||
-rw-r--r-- | java/src/Ice/ConnectionI.java | 39 | ||||
-rw-r--r-- | java/src/IceInternal/ThreadPool.java | 25 |
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()); |