fw: ASF should check if FaceInfo exists before using it

refs: #3968

Change-Id: I4c20a51609dd714e6104b103a4bef63ac8761083
diff --git a/daemon/fw/asf-strategy.cpp b/daemon/fw/asf-strategy.cpp
index 45b0d72..871ff2f 100644
--- a/daemon/fw/asf-strategy.cpp
+++ b/daemon/fw/asf-strategy.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -97,6 +97,8 @@
     return;
   }
 
+  NFD_LOG_TRACE("Forwarding interest to face: " << faceToUse->getId());
+
   forwardInterest(interest, fibEntry, pitEntry, *faceToUse);
 
   // If necessary, send probe
@@ -123,14 +125,17 @@
   }
 
   // Record the RTT between the Interest out to Data in
-  FaceInfo& faceInfo = namespaceInfo->get(inFace.getId());
-  faceInfo.recordRtt(pitEntry, inFace);
+  FaceInfo* faceInfo = namespaceInfo->get(inFace.getId());
+  if (faceInfo == nullptr) {
+    return;
+  }
+  faceInfo->recordRtt(pitEntry, inFace);
 
   // Extend lifetime for measurements associated with Face
-  namespaceInfo->extendFaceInfoLifetime(faceInfo, inFace);
+  namespaceInfo->extendFaceInfoLifetime(*faceInfo, inFace);
 
-  if (faceInfo.isTimeoutScheduled()) {
-    faceInfo.cancelTimeoutEvent(data.getName());
+  if (faceInfo->isTimeoutScheduled()) {
+    faceInfo->cancelTimeoutEvent(data.getName());
   }
 }