diff options
author | Martin Willi <martin@revosec.ch> | 2015-03-09 12:06:38 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2015-03-18 13:59:14 +0100 |
commit | 90c5b48c96d7d34fbc446660449892f3bd3b9040 (patch) | |
tree | f9ab6632ee59aaea0540d5f76f65f94f71087bce /src/libcharon/plugins/vici/python | |
parent | 288b6541739bb2e6ff766fbb8e7a803b3caf1f12 (diff) | |
download | strongswan-90c5b48c96d7d34fbc446660449892f3bd3b9040.tar.bz2 strongswan-90c5b48c96d7d34fbc446660449892f3bd3b9040.tar.xz |
vici: Catch Python GeneratorExit to properly cancel streamed event iteration
Diffstat (limited to 'src/libcharon/plugins/vici/python')
-rw-r--r-- | src/libcharon/plugins/vici/python/vici/session.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libcharon/plugins/vici/python/vici/session.py b/src/libcharon/plugins/vici/python/vici/session.py index 65b89b5ba..da79ecd64 100644 --- a/src/libcharon/plugins/vici/python/vici/session.py +++ b/src/libcharon/plugins/vici/python/vici/session.py @@ -281,10 +281,16 @@ class SessionHandler(object): # issue command, and read any event messages packet = Packet.request(command, message) self.transport.send(packet) + exited = False while True: response = Packet.parse(self.transport.receive()) if response.response_type == Packet.EVENT: - yield Message.deserialize(response.payload) + if not exited: + try: + yield Message.deserialize(response.payload) + except GeneratorExit: + exited = True + pass else: break |