diff options
| author | 2019-09-02 14:18:27 +0100 | |
|---|---|---|
| committer | 2019-09-02 14:18:27 +0100 | |
| commit | c80aab88f3572cd82a3d5ec7f3b8980c8af67966 (patch) | |
| tree | 93a4598ed96d56653092fb3d63db99a83846aee7 /modules | |
| parent | catch and rethrow gaierrors in mumble.py (diff) | |
| signature | ||
put socket timeout and deadline around mumble queries
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/mumble.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/modules/mumble.py b/modules/mumble.py index 877c735e..1da3aa55 100644 --- a/modules/mumble.py +++ b/modules/mumble.py @@ -20,13 +20,21 @@ class Module(ModuleManager.BaseModule): timestamp = datetime.datetime.utcnow().microsecond ping_packet = struct.pack(">iQ", 0, timestamp) s = socket.socket(type=socket.SOCK_DGRAM) + s.settimeout(5) - try: - s.sendto(ping_packet, (server, port)) - except socket.gaierror as e: - raise utils.EventError(str(e)) + with utils.deadline(): + try: + s.sendto(ping_packet, (server, port)) + except socket.gaierror as e: + raise utils.EventError(str(e)) + + try: + pong_packet = s.recv(24) + except socket.timeout: + raise utils.EventError( + "Timed out waiting for response from %s:%d" + % (server, port)) - pong_packet = s.recv(24) pong = struct.unpack(">bbbbQiii", pong_packet) version = ".".join(str(v) for v in pong[1:4]) |
