4b865ac
diff -up ./tools/traceroute.tools ./tools/traceroute
4b865ac
--- ./tools/traceroute.tools	2016-03-13 21:23:01.529922250 -0400
4b865ac
+++ ./tools/traceroute	2016-03-13 21:27:38.006631098 -0400
4b865ac
@@ -83,6 +83,11 @@ var main = function (target) {
4b865ac
 
4b865ac
         cjdns.RouterModule_getPeers("0000.0000.0000.0001", waitFor(function (err, ret) {
4b865ac
             if (err) { throw err; }
4b865ac
+	    if (!ret.peers) {
4b865ac
+                console.error('missing CJDNS admin password');
4b865ac
+                cjdns.disconnect();
4b865ac
+                process.exit(0);
4b865ac
+            }
4b865ac
             self = ret.peers[0];
4b865ac
         }));
4b865ac
 
4b865ac
@@ -101,12 +106,13 @@ var main = function (target) {
4b865ac
 
4b865ac
     }).nThen(function (waitFor) {
4b865ac
 
4b865ac
-        if (!lastRet || lastRet.nodes[0] !== lastRet.from) { return; }
4b865ac
+        if (!lastRet || !lastRet.nodes || lastRet.nodes[0] !== lastRet.from) { return; }
4b865ac
         console.log('success, trying reverse trace');
4b865ac
         process.stdout.write(lastRet.from);
4b865ac
         tracePath(nodeToIP6(self), lastRet.from, cjdns, function (ret) {
4b865ac
             lastRet = ret;
4b865ac
             process.stdout.write('  ' + ret.ms + 'ms\n');
4b865ac
+            if (!ret || !ret.nodes) { return; }
4b865ac
             if (ret.nodes.length === 0) {
4b865ac
                 console.log('cornered');
4b865ac
             } else if (ret.nodes[0] !== ret.from) {