aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-09-02 14:18:27 +0100
committerGravatar jesopo2019-09-02 14:18:27 +0100
commitc80aab88f3572cd82a3d5ec7f3b8980c8af67966 (patch)
tree93a4598ed96d56653092fb3d63db99a83846aee7 /modules
parentcatch 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.py18
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])