aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/client.py11
-rw-r--r--discord/gateway.py2
2 files changed, 11 insertions, 2 deletions
diff --git a/discord/client.py b/discord/client.py
index 3d7b8afa..f56f84bf 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -2450,7 +2450,16 @@ class Client:
}
voice = VoiceClient(**kwargs)
- yield from voice.connect()
+ try:
+ yield from voice.connect()
+ except asyncio.TimeoutError as e:
+ try:
+ yield from voice.disconnect()
+ except:
+ # we don't care if disconnect failed because connection failed
+ pass
+ raise e # re-raise
+
self.connection._add_voice_client(server.id, voice)
return voice
diff --git a/discord/gateway.py b/discord/gateway.py
index 661607b2..7ed7371b 100644
--- a/discord/gateway.py
+++ b/discord/gateway.py
@@ -553,7 +553,7 @@ class DiscordVoiceWebSocket(websockets.client.WebSocketClientProtocol):
@asyncio.coroutine
def poll_event(self):
try:
- msg = yield from self.recv()
+ msg = yield from asyncio.wait_for(self.recv(), timeout=30.0, loop=self.loop)
yield from self.received_message(json.loads(msg))
except websockets.exceptions.ConnectionClosed as e:
raise ConnectionClosed(e) from e