From ff8211534f820b1c8a9be149ce664d5274dc9cc4 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 7 Oct 2003 22:41:24 +0000 Subject: [PATCH] Take no guff from freaking out network event handlers. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2821 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../presents/server/net/ConnectionManager.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/java/com/threerings/presents/server/net/ConnectionManager.java b/src/java/com/threerings/presents/server/net/ConnectionManager.java index 55339e95a..759261252 100644 --- a/src/java/com/threerings/presents/server/net/ConnectionManager.java +++ b/src/java/com/threerings/presents/server/net/ConnectionManager.java @@ -1,5 +1,5 @@ // -// $Id: ConnectionManager.java,v 1.35 2003/09/24 18:37:55 mdb Exp $ +// $Id: ConnectionManager.java,v 1.36 2003/10/07 22:41:24 mdb Exp $ package com.threerings.presents.server.net; @@ -239,7 +239,7 @@ public class ConnectionManager extends LoopingThread if (handler.checkIdle(iterStamp)) { // this will queue the connection up for closure on our // next tick - closeConnection(((Connection)handler)); + closeConnection((Connection)handler); } } @@ -344,9 +344,9 @@ public class ConnectionManager extends LoopingThread Iterator siter = ready.iterator(); while (siter.hasNext()) { SelectionKey selkey = (SelectionKey)siter.next(); + NetEventHandler handler = null; try { - NetEventHandler handler = (NetEventHandler) - _handlers.get(selkey); + handler = (NetEventHandler)_handlers.get(selkey); if (handler == null) { Log.warning("Received network event but have no " + "registered handler [selkey=" + selkey + "]."); @@ -368,8 +368,13 @@ public class ConnectionManager extends LoopingThread } } catch (Exception e) { - Log.warning("Error processing network data."); + Log.warning("Error processing network data: " + handler + "."); Log.logStackTrace(e); + + // if you freak out here, you go straight in the can + if (handler != null && handler instanceof Connection) { + closeConnection((Connection)handler); + } } } ready.clear();