diff --git a/src/detail/face-impl.hpp b/src/detail/face-impl.hpp
index 9ce4a69..bb454d1 100644
--- a/src/detail/face-impl.hpp
+++ b/src/detail/face-impl.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -136,7 +136,7 @@
   {
     for (auto entry = m_pendingInterestTable.begin(); entry != m_pendingInterestTable.end(); ) {
       const Interest& pendingInterest = *(*entry)->getInterest();
-      if (pendingInterest == nack.getInterest()) {
+      if (nack.getInterest().matchesInterest(pendingInterest)) {
         shared_ptr<PendingInterest> matchedEntry = *entry;
         entry = m_pendingInterestTable.erase(entry);
         matchedEntry->invokeNackCallback(nack);
diff --git a/src/interest.cpp b/src/interest.cpp
index 7f4579f..fa58a33 100644
--- a/src/interest.cpp
+++ b/src/interest.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -212,6 +212,14 @@
   return true;
 }
 
+bool
+Interest::matchesInterest(const Interest& other) const
+{
+  /// @todo #3162 match Link field
+  return (this->getName() == other.getName() &&
+          this->getSelectors() == other.getSelectors());
+}
+
 template<encoding::Tag TAG>
 size_t
 Interest::wireEncode(EncodingImpl<TAG>& encoder) const
diff --git a/src/interest.hpp b/src/interest.hpp
index 14ba33e..8d3f29b 100644
--- a/src/interest.hpp
+++ b/src/interest.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -119,8 +119,7 @@
   toUri() const;
 
 public: // Link and forwarding hint
-
-   /**
+  /**
    * @brief Check whether the Interest contains a Link object
    * @return True if there is a link object, otherwise false
    */
@@ -210,6 +209,18 @@
   bool
   matchesData(const Data& data) const;
 
+  /**
+   * @brief Check if Interest matches @p other interest
+   *
+   * Interest matches @p other if both have the same name, selectors, and link.  Other fields
+   * (e.g., Nonce) may be different.
+   *
+   * @todo Implement distinguishing interests by link. The current implementation checks only
+   *       name+selectors (Issue #3162).
+   */
+  bool
+  matchesInterest(const Interest& other) const;
+
 public: // Name and guiders
   const Name&
   getName() const
