From 4c2bf3e42f78797889b0b6fcc8648a52ca84e61d Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 12 Jun 2020 15:58:30 +0000 Subject: [PATCH] I2CP: Meta LS error code handling --- .../net/i2p/client/streaming/I2PSocketException.java | 4 ++++ .../src/net/i2p/client/streaming/impl/PacketQueue.java | 10 ++++++++++ core/java/src/net/i2p/client/impl/MessageState.java | 1 + .../src/net/i2p/data/i2cp/MessageStatusMessage.java | 8 ++++++++ 4 files changed, 23 insertions(+) diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java index a4532debc6..f0520d46f7 100644 --- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java +++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java @@ -113,6 +113,10 @@ public class I2PSocketException extends SocketException { case MessageStatusMessage.STATUS_SEND_FAILURE_NO_LEASESET: return _x("Destination lease set not found"); + // don't translate for now + case MessageStatusMessage.STATUS_SEND_FAILURE_META_LEASESET: + return "Meta lease set"; + case SendMessageStatusListener.STATUS_CANCELLED: return _x("Local destination shutdown"); 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 97c8ed2f5b..14d980ea9f 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 @@ -344,6 +344,16 @@ class PacketQueue implements SendMessageStatusListener, Closeable { } break; + case MessageStatusMessage.STATUS_SEND_FAILURE_META_LEASESET: + // TODO + _messageStatusMap.remove(id); + IOException ioe = new I2PSocketException(status); + con.getOutputStream().streamErrorOccurred(ioe); + con.getInputStream().streamErrorOccurred(ioe); + con.setConnectionError(ioe.getLocalizedMessage()); + con.disconnect(false); + break; + case MessageStatusMessage.STATUS_SEND_BEST_EFFORT_SUCCESS: case MessageStatusMessage.STATUS_SEND_GUARANTEED_SUCCESS: case MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL: diff --git a/core/java/src/net/i2p/client/impl/MessageState.java b/core/java/src/net/i2p/client/impl/MessageState.java index 267a9cb19e..e60f080c8f 100644 --- a/core/java/src/net/i2p/client/impl/MessageState.java +++ b/core/java/src/net/i2p/client/impl/MessageState.java @@ -156,6 +156,7 @@ class MessageState { case MessageStatusMessage.STATUS_SEND_FAILURE_BAD_LEASESET: case MessageStatusMessage.STATUS_SEND_FAILURE_EXPIRED_LEASESET: case MessageStatusMessage.STATUS_SEND_FAILURE_NO_LEASESET: + case MessageStatusMessage.STATUS_SEND_FAILURE_META_LEASESET: case SendMessageStatusListener.STATUS_CANCELLED: // does not trump success if (_state != State.SUCCESS) diff --git a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java index 822efe6036..72ee546d58 100644 --- a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java +++ b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java @@ -189,6 +189,14 @@ public class MessageStatusMessage extends I2CPMessageImpl { */ public final static int STATUS_SEND_FAILURE_META_LEASESET = 22; + // NOTE: + // Add any new status codes to handlers in: + // net.i2p.client.impl.MessageState + // net.i2p.client.impl.MessageStatusMessageHandler + // net.i2p.client.streaming.I2PSocketException + // net.i2p.client.streaming.impl.PacketQueue + // net.i2p.i2ptunnel.I2PTunnelHTTPClientBase + // and update http://i2p-projekt.i2p/spec/i2cp public MessageStatusMessage() { _sessionId = -1;