diff --git a/modules/cache.js b/modules/cache.js index 9a3202f..68d28a9 100644 --- a/modules/cache.js +++ b/modules/cache.js @@ -107,6 +107,11 @@ exp.save_hash = function(uuid, hash) { redis.hmset(uuid, "h", hash, "t", time); }; +exp.remove_hash = function(uuid) { + logging.log(uuid + " cache: deleting hash"); + redis.del(uuid.toLowerCase(), "h", "t"); +}; + // get a details object for +uuid+ // {hash: "0123456789abcdef", time: 1414881524512} // null when uuid unkown diff --git a/modules/helpers.js b/modules/helpers.js index bdf8f69..1b629f0 100644 --- a/modules/helpers.js +++ b/modules/helpers.js @@ -41,7 +41,7 @@ function store_images(uuid, details, callback) { cache.update_timestamp(uuid, hash); callback(null, hash); } else { - if (!exists) { + if (details && details.hash && !exists) { logging.warn(uuid + " File was deleted! Downloading again."); } else { // hash has changed diff --git a/routes/avatars.js b/routes/avatars.js index 47f772e..3c6185b 100644 --- a/routes/avatars.js +++ b/routes/avatars.js @@ -3,6 +3,7 @@ var logging = require("../modules/logging"); var helpers = require("../modules/helpers"); var config = require("../modules/config"); var skins = require("../modules/skins"); +var cache = require("../modules/cache"); var human_status = { 0: "none", @@ -48,6 +49,10 @@ module.exports = function(req, res) { logging.log(uuid + " - " + human_status[status]); if (err) { logging.error(uuid + " " + err); + if (err.code == "ENOENT") { + logging.warn("Deleting " + uuid + " from cache!"); + cache.remove_hash(uuid); + } } etag = image && hash && hash.substr(0, 32) || "none"; var matches = req.headers["if-none-match"] == '"' + etag + '"';