diff --git a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java
index 01499cc984621e8f8d4f5f79f4f74801e7f5b2c0..4d1f03c2837dda9ee373ca1ccba3fddc66a2be6e 100644
--- a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java
+++ b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java
@@ -914,7 +914,8 @@ class PacketHandler {
         } else if (type == SSU2Util.PEER_TEST_FLAG_BYTE) {
             if (_log.shouldDebug())
                 _log.debug("Got a Peer Test");
-             _testManager.receiveTest(from, packet);
+            if (SSU2Util.ENABLE_PEER_TEST)
+                _testManager.receiveTest(from, packet);
         } else {
             if (_log.shouldWarn())
                 _log.warn("Got unknown message " + header + " on " + state);
diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState2.java b/router/java/src/net/i2p/router/transport/udp/PeerState2.java
index 0acb3d75f294be375c15ec50c26bbe9968df107c..e1f43f338b433736e4c7ec9e4a2ddcd28a8e9dae 100644
--- a/router/java/src/net/i2p/router/transport/udp/PeerState2.java
+++ b/router/java/src/net/i2p/router/transport/udp/PeerState2.java
@@ -23,6 +23,7 @@ import net.i2p.data.i2np.I2NPMessage;
 import net.i2p.data.i2np.I2NPMessageException;
 import net.i2p.data.i2np.I2NPMessageImpl;
 import net.i2p.router.RouterContext;
+import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
 import net.i2p.router.transport.udp.InboundMessageFragments.ModifiableLong;
 import static net.i2p.router.transport.udp.SSU2Util.*;
 import net.i2p.util.HexDump;
@@ -380,6 +381,28 @@ public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback
     }
 
     public void gotRI(RouterInfo ri, boolean isHandshake, boolean flood) throws DataFormatException {
+        if (_log.shouldDebug())
+            _log.debug("Got updated RI");
+        try {
+            Hash h = ri.getHash();
+            if (h.equals(_context.routerHash()))
+                return;
+            RouterInfo old = _context.netDb().store(h, ri);
+            if (flood && !ri.equals(old)) {
+                FloodfillNetworkDatabaseFacade fndf = (FloodfillNetworkDatabaseFacade) _context.netDb();
+                if ((old == null || ri.getPublished() > old.getPublished()) &&
+                    fndf.floodConditional(ri)) {
+                    if (_log.shouldDebug())
+                        _log.debug("Flooded the RI: " + h);
+                } else {
+                    if (_log.shouldInfo())
+                        _log.info("Flood request but we didn't: " + h);
+                }
+            }
+        } catch (IllegalArgumentException iae) {
+            if (_log.shouldWarn())
+                _log.warn("RI store fail: " + ri, iae);
+        }
     }
 
     public void gotRIFragment(byte[] data, boolean isHandshake, boolean flood, boolean isGzipped, int frag, int totalFrags) {
diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
index 51b3521812ea1e412854362c99e7db823345db8d..52cad4b9e7eb539a417f9c4e6d77469d12344cc7 100644
--- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
@@ -1700,7 +1700,16 @@ class PeerTestManager {
         public void gotOptions(byte[] options, boolean isHandshake) {}
 
         public void gotRI(RouterInfo ri, boolean isHandshake, boolean flood) {
-            throw new IllegalStateException("Bad block in PT");
+            try {
+                Hash h = ri.getHash();
+                if (h.equals(_context.routerHash()))
+                    return;
+                _context.netDb().store(h, ri);
+                // ignore flood request
+            } catch (IllegalArgumentException iae) {
+                if (_log.shouldWarn())
+                    _log.warn("RI store fail: " + ri, iae);
+            }
         }
 
         public void gotRIFragment(byte[] data, boolean isHandshake, boolean flood, boolean isGzipped, int frag, int totalFrags) {