OSDN Git Service

DO NOT MERGE Fix bug in PAN code where no new PAN connections can be made.
authorAriel Gertzenstein <agertzen@google.com>
Fri, 31 Jan 2014 21:39:43 +0000 (13:39 -0800)
committerAriel Gertzenstein <agertzen@google.com>
Wed, 16 Apr 2014 18:18:54 +0000 (14:18 -0400)
If you call PAN_connect() followed quickly by PAN_disconnect(),
you won't be able to establish any additional PANU connections.
This happens because the connection never has a chance to make
it into PAN_STATE_CONNECTED and num_conns only gets decremented
if you disconnect in the connected state. As a result, subsequent
calls to connect will fail because the stack still believes there
to be an existing connection.

Change-Id: Id24873828ca4f517496cb19a44993d0e8e837a1e

stack/pan/pan_api.c

index f9742ed..e6275ea 100644 (file)
@@ -466,7 +466,7 @@ tPAN_RESULT PAN_Disconnect (UINT16 handle)
     }
 
     result = BNEP_Disconnect (pcb->handle);
-    if (pcb->con_state == PAN_STATE_CONNECTED)
+    if (pcb->con_state != PAN_STATE_IDLE)
         pan_cb.num_conns--;
 
     if (pan_cb.pan_bridge_req_cb && pcb->src_uuid == UUID_SERVCLASS_NAP)