Use a single redis client in SignedMap.isAuthorized

This commit is contained in:
Sandro Santilli
2014-02-14 17:07:52 +01:00
parent 8e323a6c07
commit 63401ca3df
+13 -3
View File
@@ -162,6 +162,8 @@ o.authorizedByCert = function(cert, auth) {
//
o.isAuthorized = function(signer, map_id, auth, callback) {
var that = this;
var redisClient;
var db = that.db_signatures;
var authorized = false;
var certificate_id_list;
var missing_certificates = [];
@@ -169,9 +171,15 @@ o.isAuthorized = function(signer, map_id, auth, callback) {
console.log("Check auth from signer '" + signer + "' on map '" + map_id + "' with auth '" + auth + "'");
}
Step(
function getMapSignatures() {
function getRedisClient() {
that.redis_pool.acquire(db, this);
},
function getMapSignatures(err, client) {
if ( err ) throw err;
redisClient = client;
var map_sig_key = _.template(that.key_map_sig, {signer:signer, map_id:map_id});
that._redisCmd('SMEMBERS', [ map_sig_key ], this);
redisClient.SMEMBERS(map_sig_key, this);
//that._redisCmd('SMEMBERS', [ map_sig_key ], this);
},
function getCertificates(err, crt_lst) {
if ( err ) throw err;
@@ -186,7 +194,8 @@ o.isAuthorized = function(signer, map_id, auth, callback) {
return crt_lst;
}
var map_crt_key = _.template(that.key_map_crt, {signer:signer});
that._redisCmd('HMGET', [ map_crt_key ].concat(crt_lst), this);
//that._redisCmd('HMGET', [ map_crt_key ].concat(crt_lst), this);
redisClient.HMGET(map_crt_key, crt_lst, this);
},
function checkCertificates(err, certs) {
if ( err ) throw err;
@@ -223,6 +232,7 @@ o.isAuthorized = function(signer, map_id, auth, callback) {
+ " missing certificates: "
+ missing_certificates + " (TODO: give cleanup instructions)");
}
if ( redisClient ) that.redis_pool.release(db, redisClient);
callback(err, authorized);
}
);