diff --git a/AUTHORS.md b/AUTHORS.md
index 066a2f6..9a3b409 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -19,6 +19,7 @@
 * Nick Gordon <https://github.com/gorgonical>
 * Giulio Grassi <https://www.lip6.fr/actualite/personnes-fiche.php?ident=D1461>
 * Yi Huang <https://www.linkedin.com/in/yihuang1991>
+* Jongseok Lee <https://github.com/imwhiz>
 * Spencer Lee <https://www.linkedin.com/in/spenlee>
 * Vince Lehman <http://vslehman.com>
 * Yanbiao Li <https://www.linkedin.com/pub/yanbiao-li/24/7a1/4ba>
diff --git a/daemon/rib/service.cpp b/daemon/rib/service.cpp
index f7b4719..d9e5bc5 100644
--- a/daemon/rib/service.cpp
+++ b/daemon/rib/service.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019,  Regents of the University of California,
+ * Copyright (c) 2014-2020,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -167,8 +167,12 @@
   for (const auto& item : section) {
     const std::string& key = item.first;
     const ConfigSection& value = item.second;
-    if (key == CFG_LOCALHOST_SECURITY || key == CFG_LOCALHOP_SECURITY || key == CFG_PA_VALIDATION) {
-      hasLocalhop = key == CFG_LOCALHOP_SECURITY;
+    if (key == CFG_LOCALHOST_SECURITY || key == CFG_PA_VALIDATION) {
+      ndn::ValidatorConfig testValidator(m_face);
+      testValidator.load(value, filename);
+    }
+    else if (key == CFG_LOCALHOP_SECURITY) {
+      hasLocalhop = true;
       ndn::ValidatorConfig testValidator(m_face);
       testValidator.load(value, filename);
     }
