Fix for Netconf device re-connection.
Unproprer issuing of Device_UNREGISTERED event was causing incorrect device
removal during session re-establishment.
Unconsistent state in ports and links resulted.

Change-Id: Ie07d9077ff0b197a1cb8936b1f307807fae34aeb
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java
index c559a03..55bd659 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java
@@ -68,6 +68,7 @@
     private static final Pattern CHUNKED_SIZE_PATTERN = Pattern.compile("\\n#([1-9][0-9]*)\\n");
     private static final char HASH_CHAR = '#';
     private static final char LF_CHAR = '\n';
+    protected static final String ON_REQUEST = "on request";
 
     private OutputStreamWriter outputStream;
     private final InputStream err;
@@ -300,17 +301,19 @@
     }
 
     public void close() {
-        close("on request");
+        close(ON_REQUEST);
     }
 
     private void close(String deviceReply) {
         log.debug("Netconf device {} socketClosed = true DEVICE_UNREGISTERED {}",
                 netconfDeviceInfo, deviceReply);
-        NetconfDeviceOutputEvent event = new NetconfDeviceOutputEvent(
-                NetconfDeviceOutputEvent.Type.DEVICE_UNREGISTERED,
-                null, null, Optional.of(-1), netconfDeviceInfo);
-        netconfDeviceEventListeners.forEach(
-                listener -> listener.event(event));
+        if (!deviceReply.equals(ON_REQUEST)) {
+            NetconfDeviceOutputEvent event = new NetconfDeviceOutputEvent(
+                    NetconfDeviceOutputEvent.Type.DEVICE_UNREGISTERED,
+                    null, null, Optional.of(-1), netconfDeviceInfo);
+            netconfDeviceEventListeners.forEach(
+                    listener -> listener.event(event));
+        }
         this.interrupt();
     }