]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
wpaspy: Handle DETACH response more robustly
authorJouni Malinen <jouni@qca.qualcomm.com>
Mon, 28 Apr 2014 12:31:25 +0000 (15:31 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 28 Apr 2014 13:54:09 +0000 (16:54 +0300)
There could be pending unsolicited event messages on the monitor socket
when the DETACH command is issued. As such, the response may be
something else then OK even if the actual detach operation succeeded.
Try to avoid this be dropping pending messages before issuing the detach
command. As an additional workaround, check the response against FAIL
instead of requiring OK so that the self.attached does not get left to
True incorrectly even if an additional event message were to be
received.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
wpaspy/wpaspy.py

index 94943053f79bb225ec7d563c5a4a5b984ce7a4a5..2f57d74f7b1761a9d36ed8b9980b9aeae066b876 100644 (file)
@@ -39,6 +39,7 @@ class Ctrl:
                 self.detach()
             except Exception, e:
                 # Need to ignore this allow the socket to be closed
+                self.attached = False
                 pass
         if self.started:
             self.s.close()
@@ -64,8 +65,10 @@ class Ctrl:
     def detach(self):
         if not self.attached:
             return None
+        while self.pending():
+            ev = self.recv()
         res = self.request("DETACH")
-        if "OK" in res:
+        if "FAIL" not in res:
             self.attached = False
             return None
         raise Exception("DETACH failed")