diff --git a/rib/rib-manager.cpp b/rib/rib-manager.cpp
index 8762e39..35bc87f 100644
--- a/rib/rib-manager.cpp
+++ b/rib/rib-manager.cpp
@@ -362,7 +362,7 @@
   BOOST_ASSERT(pa.getData());
 
   if (!m_isLocalhopEnabled) {
-    NFD_LOG_INFO("slAnnounce " << pa.getAnnouncedName() << ' ' << faceId <<
+    NFD_LOG_INFO("slAnnounce " << pa.getAnnouncedName() << " " << faceId <<
                  ": localhop_security unconfigured");
     cb(SlAnnounceResult::VALIDATION_FAILURE);
     return;
@@ -375,12 +375,12 @@
       beginAddRoute(pa.getAnnouncedName(), route, nullopt,
         [=] (RibUpdateResult ribRes) {
           auto res = getSlAnnounceResultFromRibUpdateResult(ribRes);
-          NFD_LOG_INFO("slAnnounce " << pa.getAnnouncedName() << ' ' << faceId << ": " << res);
+          NFD_LOG_INFO("slAnnounce " << pa.getAnnouncedName() << " " << faceId << ": " << res);
           cb(res);
         });
     },
     [=] (const Data&, ndn::security::v2::ValidationError err) {
-      NFD_LOG_INFO("slAnnounce " << pa.getAnnouncedName() << ' ' << faceId <<
+      NFD_LOG_INFO("slAnnounce " << pa.getAnnouncedName() << " " << faceId <<
                    " validation error: " << err);
       cb(SlAnnounceResult::VALIDATION_FAILURE);
     }
@@ -394,18 +394,20 @@
   Route routeQuery;
   routeQuery.faceId = faceId;
   routeQuery.origin = ndn::nfd::ROUTE_ORIGIN_PREFIXANN;
-  Route* oldRoute = m_rib.find(name, routeQuery);
+  Route* oldRoute = m_rib.findLongestPrefix(name, routeQuery);
+
   if (oldRoute == nullptr || !oldRoute->announcement) {
-    NFD_LOG_DEBUG("slRenew " << name << ' ' << faceId << ": not found");
+    NFD_LOG_DEBUG("slRenew " << name << " " << faceId << ": not found");
     return cb(SlAnnounceResult::NOT_FOUND);
   }
+  Name routeName = oldRoute->announcement->getAnnouncedName();
 
   Route route = *oldRoute;
   route.expires = std::min(route.annExpires, time::steady_clock::now() + maxLifetime);
-  beginAddRoute(name, route, nullopt,
+  beginAddRoute(routeName, route, nullopt,
     [=] (RibUpdateResult ribRes) {
       auto res = getSlAnnounceResultFromRibUpdateResult(ribRes);
-      NFD_LOG_INFO("slRenew " << name << ' ' << faceId << ": " << res);
+      NFD_LOG_INFO("slRenew " << name << " " << faceId << ": " << res << " " << routeName);
       cb(res);
     });
 }
diff --git a/rib/rib.cpp b/rib/rib.cpp
index d209f63..bbd72f1 100644
--- a/rib/rib.cpp
+++ b/rib/rib.cpp
@@ -80,6 +80,20 @@
   return nullptr;
 }
 
+Route*
+Rib::findLongestPrefix(const Name& prefix, const Route& route) const
+{
+  Route* existingRoute = find(prefix, route);
+  if (existingRoute == nullptr) {
+    auto parent = findParent(prefix);
+    if (parent) {
+      existingRoute = find(parent->getName(), route);
+    }
+  }
+
+  return existingRoute;
+}
+
 void
 Rib::insert(const Name& prefix, const Route& route)
 {
diff --git a/rib/rib.hpp b/rib/rib.hpp
index 5beea2d..a9278de 100644
--- a/rib/rib.hpp
+++ b/rib/rib.hpp
@@ -77,6 +77,9 @@
   Route*
   find(const Name& prefix, const Route& route) const;
 
+  Route*
+  findLongestPrefix(const Name& prefix, const Route& route) const;
+
   const_iterator
   begin() const;
 
