public void connectionClosed(ConnectionEvent e) {
   GnutellaConnection conn = ((GnutellaConnectionEvent) e).getConnection();
   // remove all listeners as well
   // as remove from active and established connection lists
   conn.removeConnectionListener(this);
   synchronized (activeConnections) {
     activeConnections.remove(conn);
   }
   synchronized (establishedConnections) {
     establishedConnections.remove(conn);
   }
   fireConnectionClosed(e);
   GnutellaConnectionModel model = (GnutellaConnectionModel) e.getConnectionModel();
   switch (model.getConnectionType()) {
     case GnutellaConnectionModel.INCOMING:
       currentIncomingConnections--;
       break;
     case GnutellaConnectionModel.OUTGOING:
       currentOutgoingConnections--;
       break;
   }
   conn.removeMessageListener(listMsgListener);
   ipList.remove(e.getConnectionModel().getHostAddress());
 }