diff --git a/core/java/src/net/i2p/data/RouterInfo.java b/core/java/src/net/i2p/data/RouterInfo.java
index b38d5f6a057802d456a1dd85f60e0a6d7265caad..9f980716f5be68f354be8a91c8661b824673a882 100644
--- a/core/java/src/net/i2p/data/RouterInfo.java
+++ b/core/java/src/net/i2p/data/RouterInfo.java
@@ -637,7 +637,8 @@ public class RouterInfo extends DatabaseEntry {
     }
 
     /**
-     *  Print out routerinfos from files specified on the command line
+     *  Print out routerinfos from files specified on the command line.
+     *  Exits 1 if any RI is invalid, fails signature, etc.
      *  @since 0.8
      */
     public static void main(String[] args) {
@@ -645,23 +646,29 @@ public class RouterInfo extends DatabaseEntry {
             System.err.println("Usage: RouterInfo file ...");
             System.exit(1);
         }
+        boolean fail = false;
         for (int i = 0; i < args.length; i++) {
              RouterInfo ri = new RouterInfo();
              InputStream is = null;
              try {
                  is = new java.io.FileInputStream(args[i]);
                  ri.readBytes(is);
-                 if (ri.isValid())
+                 if (ri.isValid()) {
                      System.out.println(ri.toString());
-                 else
+                  } else {
                      System.err.println("Router info " + args[i] + " is invalid");
+                     fail = true;
+                  }
              } catch (Exception e) {
                  System.err.println("Error reading " + args[i] + ": " + e);
+                 fail = true;
              } finally {
                  if (is != null) {
                      try { is.close(); } catch (IOException ioe) {}
                  }
              }
         }
+        if (fail)
+            System.exit(1);
     }
 }