]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
vici: Gracefully consume/ignore incoming events in Python event deregistration
authorMartin Willi <martin@strongswan.org>
Mon, 14 Nov 2022 10:55:30 +0000 (11:55 +0100)
committerTobias Brunner <tobias@strongswan.org>
Mon, 12 Dec 2022 13:38:09 +0000 (14:38 +0100)
When issuing a deregistration message, some last events may still be sent
by the daemon before deregistration completes. Ignore such event messages
silently during deregistration, avoiding exceptions like:

  vici.exception.SessionException:
    Unexpected response type 7, expected '5' (EVENT_CONFIRM)

src/libcharon/plugins/vici/python/test/test_session.py
src/libcharon/plugins/vici/python/vici/session.py

index eabacc0234a268bff55a656d77c9fd891047f172..3b568daf5ca7089395a4a781b4dd426b4bd6bd83 100644 (file)
@@ -84,6 +84,7 @@ class TestSession(object):
             if name is None:
                 i += 1
                 if i > 2:
+                    s.send(Packet.EVENT, name="event", message={"late": b'1'})
                     s.send(Packet.EVENT_CONFIRM)
                     s.send(Packet.EVENT_CONFIRM)
                     break
index e98d10133aea27030e07ae3af89a1f1210b58919..79f2bda8150fc7e6113bcb2a72f0f8995fd0c17b 100644 (file)
@@ -40,7 +40,9 @@ class Session(CommandWrappers, object):
             raise EventUnknownException(
                 "Unknown event type '{event}'".format(event=event_type)
             )
-        elif response.response_type != Packet.EVENT_CONFIRM:
+        while response.response_type == Packet.EVENT:
+            response = Packet.parse(self.transport.receive())
+        if response.response_type != Packet.EVENT_CONFIRM:
             raise SessionException(
                 "Unexpected response type {type}, "
                 "expected '{confirm}' (EVENT_CONFIRM)".format(