diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2005-09-09 12:31:37 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2005-09-09 12:31:37 +0000 |
commit | e5b38e22e9ab7bc537e41ca083caa752b29cc47c (patch) | |
tree | 351dbdb1fc250e1f7f9c76864ed1a4946b291ce2 /java/src | |
parent | Bug 430: udp close on transient exceptions (diff) | |
download | ice-e5b38e22e9ab7bc537e41ca083caa752b29cc47c.tar.bz2 ice-e5b38e22e9ab7bc537e41ca083caa752b29cc47c.tar.xz ice-e5b38e22e9ab7bc537e41ca083caa752b29cc47c.zip |
bug 430: udp close on transient exceptions
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/ConnectionI.java | 39 | ||||
-rw-r--r-- | java/src/IceInternal/ThreadPool.java | 25 |
2 files changed, 59 insertions, 5 deletions
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()); |