private void closeConnection() {
        release();
        try {
            if (tlsStreamHandler == null) {
                socket.close();
            }
            else {
                // Close the channels since we are using TLS (i.e. NIO). If the channels implement
                // the InterruptibleChannel interface then any other thread that was blocked in
                // an I/O operation will be interrupted and an exception thrown
                tlsStreamHandler.close();
            }
        }
        catch (Exception e) {
            Log.error(LocaleUtils.getLocalizedString("admin.error.close")
                    + "\n" + this.toString(), e);
        }
    }
Returns true if the socket was closed due to a bad health. The socket is considered to
be in a bad state if a thread has been writing for a while and the write operation has
not finished in a long time or when the client has not sent a heartbeat for a long time.
In any of both cases the socket will be closed.

@return true if the socket was closed due to a bad health.
xmppserver/src/main/java/org/jivesoftware/openfire/net/SocketConnection.java