I noticed that a whack component is unable to react when the hosting server brutally closes the socket (ejabberd does not send </stream> when it restarts). We have to wait to send a packet or to perform a keep alive to detect the disconnection and reconnect. After some investigation I found that the cause is an EOFException poorly catched in org.jivesoftware.whack.SocketReadThread#run. In that case, the EOFException must be treated exactly like a SocketException. In fact, any fatal exception should make trigger the connection error (if the component is not shutting down).