diff options
| author | Austin Hellyer <[email protected]> | 2017-01-15 11:42:25 -0800 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2017-01-15 11:42:25 -0800 |
| commit | 3c19fc91b44b0fa2f0179f99797dec8ffa58d28e (patch) | |
| tree | f000180cdb842ba651ea7c63b4254063d6af62da /src | |
| parent | Reconnect on any websocket error (diff) | |
| download | serenity-3c19fc91b44b0fa2f0179f99797dec8ffa58d28e.tar.xz serenity-3c19fc91b44b0fa2f0179f99797dec8ffa58d28e.zip | |
Don't reconnect on WS error within some time
Wait until at least one heartbeat has been sent before doing so.
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/gateway/shard.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/client/gateway/shard.rs b/src/client/gateway/shard.rs index ecf5c89..0b2b35f 100644 --- a/src/client/gateway/shard.rs +++ b/src/client/gateway/shard.rs @@ -12,6 +12,7 @@ use super::{GatewayError, GatewayStatus, prep}; use time; use websocket::client::{Client as WsClient, Sender, Receiver}; use websocket::message::Message as WsMessage; +use websocket::result::WebSocketError; use websocket::stream::WebSocketStream; use websocket::ws::sender::Sender as WsSender; use ::constants::OpCode; @@ -410,6 +411,12 @@ impl Shard { self.reconnect(receiver).map(|(ev, rec)| Some((ev, Some(rec)))) }, Err(Error::WebSocket(why)) => { + if let WebSocketError::NoDataAvailable = why { + if self.heartbeat_instants.1.is_none() { + return Ok(None); + } + } + warn!("Websocket error: {:?}", why); info!("Will attempt to reconnect or resume"); |