possible fix for link discovery

Change-Id: Id52dce21e93f0ca4665b15d3b169dc6a8dba76b4
diff --git a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java
index 8b4d444..009cd3f 100644
--- a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java
+++ b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java
@@ -41,6 +41,7 @@
 import org.projectfloodlight.openflow.protocol.OFHelloElem;
 import org.projectfloodlight.openflow.protocol.OFMessage;
 import org.projectfloodlight.openflow.protocol.OFPacketIn;
+import org.projectfloodlight.openflow.protocol.OFPacketOut;
 import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply;
 import org.projectfloodlight.openflow.protocol.OFPortDescStatsRequest;
 import org.projectfloodlight.openflow.protocol.OFPortStatus;
@@ -418,7 +419,14 @@
                 //h.setSwitchRole(RoleState.EQUAL);
 
                 h.sw.startDriverHandshake();
-                h.setState(WAIT_SWITCH_DRIVER_SUB_HANDSHAKE);
+                if (h.sw.isDriverHandshakeComplete()) {
+                    if (!h.sw.connectSwitch()) {
+                        disconnectDuplicate(h);
+                    }
+                    h.setState(ACTIVE);
+                } else {
+                    h.setState(WAIT_SWITCH_DRIVER_SUB_HANDSHAKE);
+                }
 
             }
 
@@ -465,6 +473,8 @@
 
                 if (h.sw.isDriverHandshakeComplete()) {
                     moveToActive(h);
+                    h.state.processOFMessage(h, m);
+                    return;
 
                 }
 
@@ -479,7 +489,6 @@
                         h.sw.processDriverHandshakeMessage(m);
                         if (h.sw.isDriverHandshakeComplete()) {
                             moveToActive(h);
-                            h.setState(ACTIVE);
                         }
                     }
                 } else {
@@ -507,7 +516,6 @@
                 h.setState(ACTIVE);
                 if (!success) {
                     disconnectDuplicate(h);
-                    return;
                 }
             }
 
@@ -581,6 +589,11 @@
 
             @Override
             void processOFPacketIn(OFChannelHandler h, OFPacketIn m) {
+//                OFPacketOut out =
+//                        h.sw.factory().buildPacketOut()
+//                                .setXid(m.getXid())
+//                                .setBufferId(m.getBufferId()).build();
+//                h.sw.sendMsg(out);
                 h.dispatchMessage(m);
             }