diff --git a/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java b/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java index 170733b16f..eb054f9ddc 100644 --- a/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java +++ b/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java @@ -6,6 +6,7 @@ public enum CloseConnectionReason { RESET(false, false), SOCKET_TIMEOUT(false, false), TERMINATED(false, false), // EOFException + CORRUPTED_DATA(false, false), UNKNOWN_EXCEPTION(false, false), // Planned diff --git a/network/src/main/java/io/bitsquare/p2p/network/Connection.java b/network/src/main/java/io/bitsquare/p2p/network/Connection.java index 2059b86cd8..f2f1370b96 100644 --- a/network/src/main/java/io/bitsquare/p2p/network/Connection.java +++ b/network/src/main/java/io/bitsquare/p2p/network/Connection.java @@ -540,8 +540,10 @@ public class Connection implements MessageListener { } else if (e instanceof SocketTimeoutException || e instanceof TimeoutException) { closeConnectionReason = CloseConnectionReason.SOCKET_TIMEOUT; log.debug("SocketTimeoutException at socket " + socket.toString() + "\n\tconnection={}" + this); - } else if (e instanceof EOFException || e instanceof StreamCorruptedException) { + } else if (e instanceof EOFException) { closeConnectionReason = CloseConnectionReason.TERMINATED; + } else if (e instanceof OptionalDataException || e instanceof StreamCorruptedException) { + closeConnectionReason = CloseConnectionReason.CORRUPTED_DATA; } else { // TODO sometimes we get StreamCorruptedException, OptionalDataException, IllegalStateException closeConnectionReason = CloseConnectionReason.UNKNOWN_EXCEPTION; @@ -788,7 +790,8 @@ public class Connection implements MessageListener { } } } catch (Throwable t) { - t.printStackTrace(); + if (!(t instanceof OptionalDataException)) + t.printStackTrace(); stop(); sharedModel.handleConnectionException(new Exception(t)); }