aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
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])