diff --git a/src/jamidht/namedirectory.cpp b/src/jamidht/namedirectory.cpp
index 336c831e146748590afe40262a4a0ce94da25352..ede1b21c9545019d7418a3a45167173c1d7c5bbe 100644
--- a/src/jamidht/namedirectory.cpp
+++ b/src/jamidht/namedirectory.cpp
@@ -165,38 +165,39 @@ NameDirectory::lookupAddress(const std::string& addr, LookupCallback cb)
                              addr.c_str(),
                              response.status_code);
                     cb("", Response::error);
-                }
-                try {
-                    Json::Value json;
-                    std::string err;
-                    Json::CharReaderBuilder rbuilder;
-                    auto reader = std::unique_ptr<Json::CharReader>(rbuilder.newCharReader());
-                    if (!reader->parse(response.body.data(),
-                                       response.body.data() + response.body.size(),
-                                       &json,
-                                       &err)) {
-                        JAMI_DBG("Address lookup for %s: can't parse server response: %s",
-                                 addr.c_str(),
-                                 response.body.c_str());
+                } else {
+                    try {
+                        Json::Value json;
+                        std::string err;
+                        Json::CharReaderBuilder rbuilder;
+                        auto reader = std::unique_ptr<Json::CharReader>(rbuilder.newCharReader());
+                        if (!reader->parse(response.body.data(),
+                                        response.body.data() + response.body.size(),
+                                        &json,
+                                        &err)) {
+                            JAMI_DBG("Address lookup for %s: can't parse server response: %s",
+                                    addr.c_str(),
+                                    response.body.c_str());
+                            cb("", Response::error);
+                            return;
+                        }
+                        auto name = json["name"].asString();
+                        if (name.empty()) {
+                            cb(name, Response::notFound);
+                            return;
+                        }
+                        JAMI_DBG("Found name for %s: %s", addr.c_str(), name.c_str());
+                        {
+                            std::lock_guard<std::mutex> l(cacheLock_);
+                            addrCache_.emplace(name, addr);
+                            nameCache_.emplace(addr, name);
+                        }
+                        cb(name, Response::found);
+                        scheduleCacheSave();
+                    } catch (const std::exception& e) {
+                        JAMI_ERR("Error when performing address lookup: %s", e.what());
                         cb("", Response::error);
-                        return;
-                    }
-                    auto name = json["name"].asString();
-                    if (name.empty()) {
-                        cb(name, Response::notFound);
-                        return;
-                    }
-                    JAMI_DBG("Found name for %s: %s", addr.c_str(), name.c_str());
-                    {
-                        std::lock_guard<std::mutex> l(cacheLock_);
-                        addrCache_.emplace(name, addr);
-                        nameCache_.emplace(addr, name);
                     }
-                    cb(name, Response::found);
-                    scheduleCacheSave();
-                } catch (const std::exception& e) {
-                    JAMI_ERR("Error when performing address lookup: %s", e.what());
-                    cb("", Response::error);
                 }
                 requests_.erase(reqid);
             });