4b865ac
diff -up ./tools/traceroute.tools ./tools/traceroute
9b2cd28
--- ./tools/traceroute.tools	2019-05-02 04:02:32.000000000 -0400
9b2cd28
+++ ./tools/traceroute	2019-05-08 12:18:10.958661859 -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
 
9b2cd28
@@ -101,11 +106,12 @@ 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
+            if (!ret || !ret.nodes) { return; }
9b2cd28
             process.stdout.write('  ' + ret.ms + 'ms\n');
5c914f7
             if (ret.result === 'timeout') {
5c914f7
                 process.stdout.write('\n' + ret.from + ' ' + ret.result + '!');