Correcting NACK behavior (actually, reaction to NACKs)
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index bba9ef9..718e684 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -308,7 +308,8 @@
"Outgoing entry should exist");
outFace->m_face->LeakBucketByOnePacket ();
- // outFace->m_waitingInVain = true; // don't think that this is necessary
+ m_pit->modify (m_pit->iterator_to (pitEntry),
+ ll::bind (&CcnxPitEntry::SetWaitingInVain, ll::_1, outFace));
// m_droppedInterestsTrace (header, DROP_CONGESTION, m_node->GetObject<Ccnx> (), incomingFace);
@@ -337,7 +338,8 @@
// ForwardingStrategy will try its best to forward packet to at least one interface.
// If no interests was propagated, then there is not other option for forwarding or
// ForwardingStrategy failed to find it.
- if (!propagated) GiveUpInterest (pitEntry, header);
+ if (!propagated && pitEntry.AreAllOutgoingInVain ())
+ GiveUpInterest (pitEntry, header);
}
// Processing Interests