ONOS-2432 Fixed blackhole npe by only acting on src and dst hosts that are not null

Change-Id: Iae587a8b873b0d697bb6d723be2afafd9bb56de4
diff --git a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
index 6aa040b..f63d65d 100644
--- a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
@@ -698,18 +698,23 @@
 
         for (SrcDstPair sd : pairs) {
             // get the edge deviceID for the src host
-            DeviceId srcId = hostService.getHost(HostId.hostId(sd.src)).location().deviceId();
-            DeviceId dstId = hostService.getHost(HostId.hostId(sd.dst)).location().deviceId();
-            log.trace("SRC ID is " + srcId + ", DST ID is " + dstId);
+            Host srcHost = hostService.getHost(HostId.hostId(sd.src));
+            Host dstHost = hostService.getHost(HostId.hostId(sd.dst));
+            if (srcHost != null && dstHost != null) {
+                DeviceId srcId = srcHost.location().deviceId();
+                DeviceId dstId = dstHost.location().deviceId();
+                log.trace("SRC ID is " + srcId + ", DST ID is " + dstId);
 
-            cleanFlowRules(sd, egress.deviceId());
+                cleanFlowRules(sd, egress.deviceId());
 
-            Set<Path> shortestPaths = srcPaths.get(srcId);
-            if (shortestPaths == null) {
-                shortestPaths = topologyService.getPaths(topologyService.currentTopology(), egress.deviceId(), srcId);
-                srcPaths.put(srcId, shortestPaths);
+                Set<Path> shortestPaths = srcPaths.get(srcId);
+                if (shortestPaths == null) {
+                    shortestPaths = topologyService.getPaths(topologyService.currentTopology(),
+                            egress.deviceId(), srcId);
+                    srcPaths.put(srcId, shortestPaths);
+                }
+                backTrackBadNodes(shortestPaths, dstId, sd);
             }
-            backTrackBadNodes(shortestPaths, dstId, sd);
         }
     }