From 2467856011c1e9cae821e679c9d4493d66dab5ea Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 18 May 2014 00:44:51 +0000 Subject: [PATCH] * Streaming: Cleanup, don't fail hard on no tunnels (ticket #788) --- .../client/streaming/impl/PacketQueue.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java index 18c9746281..7e9365436f 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java @@ -247,7 +247,8 @@ class PacketQueue implements SendMessageStatusListener { public void messageStatus(I2PSession session, long msgId, int status) { if (_dead) return; - Connection con = _messageStatusMap.get(Long.valueOf(msgId)); + Long id = Long.valueOf(msgId); + Connection con = _messageStatusMap.get(id); if (con == null) { if (_log.shouldLog(Log.WARN)) _log.warn("Rcvd status " + status + " for msg " + msgId + " on unknown connection"); @@ -256,10 +257,13 @@ class PacketQueue implements SendMessageStatusListener { switch (status) { case MessageStatusMessage.STATUS_SEND_BEST_EFFORT_FAILURE: + // not really guaranteed case MessageStatusMessage.STATUS_SEND_GUARANTEED_FAILURE: - _messageStatusMap.remove(Long.valueOf(msgId)); + // no tunnels may fix itself, allow retx + case MessageStatusMessage.STATUS_SEND_FAILURE_NO_TUNNELS: if (_log.shouldLog(Log.WARN)) _log.warn("Rcvd soft failure status " + status + " for msg " + msgId + " on " + con); + _messageStatusMap.remove(id); break; case MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL: @@ -271,20 +275,19 @@ class PacketQueue implements SendMessageStatusListener { case MessageStatusMessage.STATUS_SEND_FAILURE_OVERFLOW: case MessageStatusMessage.STATUS_SEND_FAILURE_EXPIRED: case MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL_LEASESET: - case MessageStatusMessage.STATUS_SEND_FAILURE_NO_TUNNELS: case MessageStatusMessage.STATUS_SEND_FAILURE_UNSUPPORTED_ENCRYPTION: case MessageStatusMessage.STATUS_SEND_FAILURE_DESTINATION: case MessageStatusMessage.STATUS_SEND_FAILURE_BAD_LEASESET: case MessageStatusMessage.STATUS_SEND_FAILURE_EXPIRED_LEASESET: case MessageStatusMessage.STATUS_SEND_FAILURE_NO_LEASESET: case SendMessageStatusListener.STATUS_CANCELLED: - IOException ioe = new I2PSocketException(status); if (_log.shouldLog(Log.WARN)) _log.warn("Rcvd hard failure status " + status + " for msg " + msgId + " on " + con); - _messageStatusMap.remove(Long.valueOf(msgId)); + _messageStatusMap.remove(id); + IOException ioe = new I2PSocketException(status); con.getOutputStream().streamErrorOccurred(ioe); con.getInputStream().streamErrorOccurred(ioe); - con.setConnectionError("barf boof bazzle code " + status); + con.setConnectionError("failure code " + status); con.disconnect(false); break; @@ -293,7 +296,7 @@ class PacketQueue implements SendMessageStatusListener { case MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL: if (_log.shouldLog(Log.WARN)) _log.warn("Rcvd success status " + status + " for msg " + msgId + " on " + con); - _messageStatusMap.remove(Long.valueOf(msgId)); + _messageStatusMap.remove(id); break; case MessageStatusMessage.STATUS_SEND_ACCEPTED: @@ -304,10 +307,9 @@ class PacketQueue implements SendMessageStatusListener { default: if (_log.shouldLog(Log.WARN)) _log.warn("Rcvd unknown status " + status + " for msg " + msgId + " on " + con); - _messageStatusMap.remove(Long.valueOf(msgId)); + _messageStatusMap.remove(id); break; } - } /** -- GitLab