diff --git a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java index 8533a48bca4e470fd10862532435edca22882578..4a9c48dc22ab1c0ce3e15b0c7316638b139feba5 100644 --- a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java +++ b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java @@ -66,6 +66,16 @@ public class InboundMessageDistributor implements GarlicMessageReceiver.CloveRec newMsg.setFromHash(orig.getFromHash()); newMsg.setSearchKey(orig.getSearchKey()); msg = newMsg; + } else if ( (_client != null) && + (msg.getType() == DatabaseStoreMessage.MESSAGE_TYPE) && + (((DatabaseStoreMessage)msg).getValueType() == DatabaseStoreMessage.KEY_TYPE_ROUTERINFO)) { + // FVSJ may result in an unsolicited RI store if the peer went non-ff. + // Maybe we can figure out a way to handle this safely, so we don't ask him again. + // For now, just hope we eventually find out through other means. + // Todo: if peer was ff and RI is not ff, queue for exploration in netdb (but that isn't part of the facade now) + if (_log.shouldLog(Log.WARN)) + _log.warn("Dropping DSM down a tunnel for " + _client.toBase64() + ": " + msg); + return; } else if ( (_client != null) && (msg.getType() != DeliveryStatusMessage.MESSAGE_TYPE) && (msg.getType() != GarlicMessage.MESSAGE_TYPE) &&