diff --git a/src/communication/sync-logic-handler.cpp b/src/communication/sync-logic-handler.cpp
index f4a42a2..05f3e87 100644
--- a/src/communication/sync-logic-handler.cpp
+++ b/src/communication/sync-logic-handler.cpp
@@ -83,7 +83,8 @@
         interestName.append("name");
         interestName.appendNumber(sm.getNameLsaSeq());
         pnlsr.getLsdb().expressInterest(interestName,
-                                        pnlsr.getConfParameter().getInterestResendTime());
+                                        pnlsr.getConfParameter().getInterestResendTime(),
+                                        0);
       }
       if (pnlsr.getLsdb().isAdjLsaNew(rName.append("adjacency"),
                                       sm.getAdjLsaSeq())) {
@@ -94,7 +95,8 @@
         interestName.append("adjacency");
         interestName.appendNumber(sm.getAdjLsaSeq());
         pnlsr.getLsdb().expressInterest(interestName,
-                                        pnlsr.getConfParameter().getInterestResendTime());
+                                        pnlsr.getConfParameter().getInterestResendTime(),
+                                        0);
       }
       if (pnlsr.getLsdb().isCoordinateLsaNew(rName.append("coordinate"),
                                              sm.getCorLsaSeq())) {
@@ -105,7 +107,8 @@
         interestName.append("coordinate");
         interestName.appendNumber(sm.getCorLsaSeq());
         pnlsr.getLsdb().expressInterest(interestName,
-                                        pnlsr.getConfParameter().getInterestResendTime());
+                                        pnlsr.getConfParameter().getInterestResendTime(),
+                                        0);
       }
     }
     catch (std::exception& e) {
diff --git a/src/lsdb.cpp b/src/lsdb.cpp
index 9a2afab..c970472 100644
--- a/src/lsdb.cpp
+++ b/src/lsdb.cpp
@@ -724,7 +724,8 @@
 
 
 void
-Lsdb::expressInterest(const ndn::Name& interestName, uint32_t interestLifeTime)
+Lsdb::expressInterest(const ndn::Name& interestName, uint32_t interestLifeTime,
+                      uint32_t timeoutCount)
 {
   std::cout << "Expressing Interest :" << interestName << std::endl;
   _LOG_DEBUG("Expressing Interest for LSA(name): " << interestName);
@@ -735,7 +736,7 @@
                                        ndn::bind(&Lsdb::processContent,
                                                  this, _1, _2),
                                        ndn::bind(&Lsdb::processInterestTimedOut,
-                                                 this, _1));
+                                                 this, _1, timeoutCount));
 }
 
 void
@@ -931,11 +932,17 @@
 }
 
 void
-Lsdb::processInterestTimedOut(const ndn::Interest& interest)
+Lsdb::processInterestTimedOut(const ndn::Interest& interest, uint32_t timeoutCount)
 {
   const ndn::Name& interestName(interest.getName());
-  cout << "Interest timed out for LSA(name): " << interestName << endl;
   _LOG_DEBUG("Interest timed out for  LSA(name): " << interestName);
+  if ((timeoutCount + 1) <= m_nlsr.getConfParameter().getInterestRetryNumber()) {
+    _LOG_DEBUG("Interest timeoutCount: " << (timeoutCount + 1));
+    _LOG_DEBUG("Need to express interest again for LSA(name): " << interestName);
+    expressInterest(interestName,
+                    m_nlsr.getConfParameter().getInterestResendTime(),
+                    timeoutCount + 1);
+  }
 }
 
 ndn::time::system_clock::TimePoint
diff --git a/src/lsdb.hpp b/src/lsdb.hpp
index 752b52b..ef98138 100644
--- a/src/lsdb.hpp
+++ b/src/lsdb.hpp
@@ -138,7 +138,8 @@
                                 uint64_t seqNo);
 public:
   void
-  expressInterest(const ndn::Name& interestName, uint32_t interestLifeTime);
+  expressInterest(const ndn::Name& interestName, uint32_t interestLifeTime,
+                  uint32_t timeoutCount);
 
   void
   processInterest(const ndn::Name& name, const ndn::Interest& interest);
@@ -175,7 +176,7 @@
                               uint32_t lsSeqNo, std::string& dataContent);
 
   void
-  processInterestTimedOut(const ndn::Interest& interest);
+  processInterestTimedOut(const ndn::Interest& interest, uint32_t timeoutCount);
 
   ndn::time::system_clock::TimePoint
   getLsaExpirationTimePoint();
