diff --git a/daemon/fw/best-route-strategy.cpp b/daemon/fw/best-route-strategy.cpp
index 3b94531..d60411f 100644
--- a/daemon/fw/best-route-strategy.cpp
+++ b/daemon/fw/best-route-strategy.cpp
@@ -26,7 +26,7 @@
 {
   const fib::NextHopList& nexthops = fibEntry->getNextHops();
   if (nexthops.size() == 0) {
-    this->rebuffPendingInterest(pitEntry);
+    this->rejectPendingInterest(pitEntry);
     return;
   }
   
diff --git a/daemon/fw/broadcast-strategy.cpp b/daemon/fw/broadcast-strategy.cpp
index 7781377..49d0ef6 100644
--- a/daemon/fw/broadcast-strategy.cpp
+++ b/daemon/fw/broadcast-strategy.cpp
@@ -36,7 +36,7 @@
   }
 
   if (!isPropagated) {
-    this->rebuffPendingInterest(pitEntry);
+    this->rejectPendingInterest(pitEntry);
   }
 }
 
diff --git a/daemon/fw/forwarder.cpp b/daemon/fw/forwarder.cpp
index 4cc93d0..d438f10 100644
--- a/daemon/fw/forwarder.cpp
+++ b/daemon/fw/forwarder.cpp
@@ -166,9 +166,9 @@
 }
 
 void
-Forwarder::onInterestRebuff(shared_ptr<pit::Entry> pitEntry)
+Forwarder::onInterestReject(shared_ptr<pit::Entry> pitEntry)
 {
-  NFD_LOG_DEBUG("onInterestRebuff interest=" << pitEntry->getName());
+  NFD_LOG_DEBUG("onInterestReject interest=" << pitEntry->getName());
 
   // set PIT straggler timer
   this->setStragglerTimer(pitEntry);
diff --git a/daemon/fw/forwarder.hpp b/daemon/fw/forwarder.hpp
index 51932d1..6622999 100644
--- a/daemon/fw/forwarder.hpp
+++ b/daemon/fw/forwarder.hpp
@@ -73,10 +73,10 @@
   VIRTUAL_WITH_TESTS void
   onOutgoingInterest(shared_ptr<pit::Entry> pitEntry, Face& outFace);
 
-  /** \brief Interest rebuff pipeline
+  /** \brief Interest reject pipeline
    */
   VIRTUAL_WITH_TESTS void
-  onInterestRebuff(shared_ptr<pit::Entry> pitEntry);
+  onInterestReject(shared_ptr<pit::Entry> pitEntry);
 
   /** \brief Interest unsatisfied pipeline
    */
diff --git a/daemon/fw/strategy.cpp b/daemon/fw/strategy.cpp
index 078ef22..09268a8 100644
--- a/daemon/fw/strategy.cpp
+++ b/daemon/fw/strategy.cpp
@@ -63,9 +63,9 @@
 }
 
 void
-Strategy::rebuffPendingInterest(shared_ptr<pit::Entry> pitEntry)
+Strategy::rejectPendingInterest(shared_ptr<pit::Entry> pitEntry)
 {
-  m_forwarder.onInterestRebuff(pitEntry);
+  m_forwarder.onInterestReject(pitEntry);
 }
 
 } // namespace fw
diff --git a/daemon/fw/strategy.hpp b/daemon/fw/strategy.hpp
index 311af93..edffdb3 100644
--- a/daemon/fw/strategy.hpp
+++ b/daemon/fw/strategy.hpp
@@ -43,7 +43,7 @@
    *  - If the strategy decides to forward this Interest,
    *    invoke this->sendInterest one or more times, either now or shortly after
    *  - If strategy concludes that this Interest cannot be forwarded,
-   *    invoke this->rebuffPendingInterest so that PIT entry will be deleted shortly
+   *    invoke this->rejectPendingInterest so that PIT entry will be deleted shortly
    */
   virtual void
   afterReceiveInterest(const Face& inFace,
@@ -106,7 +106,7 @@
    *  forwarded earlier, and does not need to be resent now.
    */
   VIRTUAL_WITH_TESTS void
-  rebuffPendingInterest(shared_ptr<pit::Entry> pitEntry);
+  rejectPendingInterest(shared_ptr<pit::Entry> pitEntry);
 
 protected: // accessors
   MeasurementsAccessor&
