diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gateway/shard.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/gateway/shard.rs b/src/gateway/shard.rs index aaebf14..72652b9 100644 --- a/src/gateway/shard.rs +++ b/src/gateway/shard.rs @@ -813,5 +813,29 @@ fn connect(base_url: &str) -> Result<(Sender<WebSocketStream>, Receiver<WebSocke let response = WsClient::connect(url)?.send()?; response.validate()?; - Ok(response.begin().split()) + let (mut sender, mut receiver) = response.begin().split(); + + let timeout = StdDuration::from_secs(90); + + { + let mut ws_stream = receiver.get_mut().get_mut(); + let stream = match *ws_stream { + WebSocketStream::Tcp(ref mut s) => s, + WebSocketStream::Ssl(ref mut s) => s.get_mut(), + }; + + stream.set_read_timeout(Some(timeout))?; + } + + { + let mut ws_stream = sender.get_mut(); + let stream = match *ws_stream { + WebSocketStream::Tcp(ref mut s) => s, + WebSocketStream::Ssl(ref mut s) => s.get_mut(), + }; + + stream.set_read_timeout(Some(timeout))?; + } + + Ok((sender, receiver)) } |