If I do the following fix:
void
HelloProtocol::onRegistrationFailure(const ndn::nfd::ControlResponse& response,
const ndn::Name& name, const ndn::time::milliseconds& timeout)
{
_LOG_DEBUG(response.getText() << " (code: " << response.getCode() << ")");
// Temporary fix until #2954
if (response.getText() == "Face with remote URI already exists") {
ndn::nfd::ControlParameters faceParams(response.getBody());
_LOG_WARN(response.getText() << " (code: " << response.getCode() << ") " << faceParams.getFaceId());
onRegistrationSuccess(faceParams, name, timeout);
return;
}
NLSR still does not converge.
In a two node topology, node b's NLSR sends HELLO interest to node a.
But NFD's best route strategy says no route:
1487969928.411582 DEBUG: [ContentStore] find /ndn/a-site/%C1.Router/cs/a/NLSR/INFO/%07%1E%08%03ndn%08%06b-site%08%08%C1.Router%08%02cs%08%01b L
1487969928.411616 DEBUG: [ContentStore] no-match
1487969928.411621 DEBUG: [Forwarder] onContentStoreMiss interest=/ndn/a-site/%C1.Router/cs/a/NLSR/INFO/%07%1E%08%03ndn%08%06b-site%08%08%C1.Router%08%02cs%08%01b
1487969928.411636 TRACE: [Strategy] lookupFib noLinkObject found=/
1487969928.411668 DEBUG: [BestRouteStrategy2] /ndn/a-site/%C1.Router/cs/a/NLSR/INFO/%07%1E%08%03ndn%08%06b-site%08%08%C1.Router%08%02cs%08%01b?ndn.MustBeFresh=1&ndn.InterestLifetime=3000&ndn.Nonce=3969901325 from=257 noNextHop
1487969928.411683 DEBUG: [Forwarder] onOutgoingNack face=257 nack=/ndn/a-site/%C1.Router/cs/a/NLSR/INFO/%07%1E%08%03ndn%08%06b-site%08%08%C1.Router%08%02cs%08%01b~NoRoute OK
1487969928.411696 TRACE: [LinkService] [id=257,local=unix:///run/b.sock,remote=fd://21] sendNack
I think I am missing some step here?
Also face from a to b is persistent,
but face from b to a is on-demand.
(a starts before b, and its HELLO reaches b)