From 6d2ce0027c91be861f23254bac00ce54484232e4 Mon Sep 17 00:00:00 2001 From: Austin King <shout@ozten.com> Date: Fri, 4 May 2012 16:16:00 -0700 Subject: [PATCH] Extracting callback for wanted fields to outside of loop. --- lib/primary.js | 15 +++++++++++---- lib/wsapi/address_info.js | 7 ++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/primary.js b/lib/primary.js index 52be47ec4..b9d0c4167 100644 --- a/lib/primary.js +++ b/lib/primary.js @@ -56,13 +56,14 @@ function parseWellKnownBody(body, domain, delegates, cb) { bail = true; return cb("Too many hops while delegating authority " + JSON.stringify(dels)); } - logger.debug(domain,' is delegating to', v[k]); + logger.debug(domain + ' is delegating to' + v[k]); // recurse into low level get /.well-known/browserid and parse again? // If everything goes well, finally call our original callback delegates[domain] = dels.length; getWellKnown(v[k], delegates, function (err, nbody, ndomain, ndelegates) { if (err) { - cb(err); + bail = true; + return cb(err); } parseWellKnownBody(nbody, ndomain, ndelegates, cb); }); @@ -70,13 +71,16 @@ function parseWellKnownBody(body, domain, delegates, cb) { } }); if (bail) return; + var missing_keys = []; want.forEach(function(k) { if (-1 === got.indexOf(k)) { - cb("missing required key: " + k); + missing_keys.push(k); bail = true; } }); - if (bail) return; + if (bail) { + return cb("missing required key: " + missing_keys.join(', ')); + }; // Allow SHIMMED_PRIMARIES to change example.com into 127.0.0.1:10005 var url_prefix = 'https://' + domain; @@ -193,6 +197,8 @@ exports.checkSupport = function(domain, cb, delegates) { if (typeof domain !== 'string' || !domain.length) { return process.nextTick(function() { cb("invalid domain"); }); } + + getWellKnown(domain, delegates, function (err, body, domain, cbdelegates) { if (err) { logger.debug(err); @@ -221,6 +227,7 @@ exports.checkSupport = function(domain, cb, delegates) { } } }); + }; diff --git a/lib/wsapi/address_info.js b/lib/wsapi/address_info.js index 778bd4291..9a4c9009f 100644 --- a/lib/wsapi/address_info.js +++ b/lib/wsapi/address_info.js @@ -30,8 +30,13 @@ exports.process = function(req, res) { if (!m) { return httputils.badRequest(res, "invalid email address"); } - + // Saftey value for production branch only + var done = false; primary.checkSupport(m[1], function(err, urls, publicKey, delegates) { + if (done) { + return; + } + done = true; if (err) { logger.warn('error checking "' + m[1] + '" for primary support: ' + err); return httputils.serverError(res, "can't check email address"); -- GitLab