On 12 Sep 2003, <[EMAIL PROTECTED]> wrote:
+++ PoolTcpEndpoint.java 12 Sep 2003 03:51:36 -0000 1.16 @@ -389,12 +389,12 @@ if (accepted != null) { try { accepted.close(); - accepted = null; } catch(Exception ex) { msg = sm.getString("endpoint.err.nonfatal", accepted, ex); log.warn(msg, ex); } + accepted = null; }
if( ! running ) return null;
wouldn't it be better to put the "accepted = null" into a finally block so you clean up even in the (unlikely but possible) case where close throws an Error (or Throwable) instead of an Exception?
Wouldn't do anything. The 'accepted' variable is local to the stack-frame, so it goes away if I throw clear of the method. In this case you just get a DoS condition where no threads are listening on the ServerSocket. I briefly thought about changing the catch to 'Throwable', but is it really possible for Socket.close to throw anything other than an Exception?
I don't know. From traces I saw, there are conditions where there could be no thread listening on the socket (at that point, the connector was dead, of course), while everything else in the TP was looking ok (including no deadlock). There didn't seem to be anything in the logs related to an error during accept.
I'd catch throwable just to be safe, personally :)
Remy
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]