aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gateway/shard.rs2
-rw-r--r--src/http/mod.rs2
-rw-r--r--src/internal/ws_impl.rs28
3 files changed, 18 insertions, 14 deletions
diff --git a/src/gateway/shard.rs b/src/gateway/shard.rs
index 5dcd4d1..473c17b 100644
--- a/src/gateway/shard.rs
+++ b/src/gateway/shard.rs
@@ -495,8 +495,6 @@ impl Shard {
self.reconnect().and(Ok(None))
}
},
- Err(Error::WebSocket(WebSocketError::ProtocolError(..)))
- | Err(Error::WebSocket(WebSocketError::DataFrameError(..))) => Ok(None),
Err(Error::WebSocket(why)) => {
if let WebSocketError::NoDataAvailable = why {
if self.heartbeat_instants.1.is_none() {
diff --git a/src/http/mod.rs b/src/http/mod.rs
index 850f800..71b5885 100644
--- a/src/http/mod.rs
+++ b/src/http/mod.rs
@@ -295,7 +295,9 @@ pub fn create_permission(channel_id: u64, target_id: u64, map: &Value) -> Result
/// Creates a private channel with a user.
pub fn create_private_channel(map: &Value) -> Result<PrivateChannel> {
+ info!("{:?}", map);
let body = map.to_string();
+ info!("{}", body);
let response = request!(Route::UsersMeChannels,
post(body),
"/users/@me/channels");
diff --git a/src/internal/ws_impl.rs b/src/internal/ws_impl.rs
index 0db40ee..8366a23 100644
--- a/src/internal/ws_impl.rs
+++ b/src/internal/ws_impl.rs
@@ -17,36 +17,40 @@ pub trait SenderExt {
impl ReceiverExt for WsClient<TlsStream<TcpStream>> {
fn recv_json<F, T>(&mut self, decode: F) -> Result<T> where F: FnOnce(Value) -> Result<T> {
- match self.recv_message()? {
+ let message = self.recv_message()?;
+
+ if let OwnedMessage::Ping(ref x) = message {
+ self.send_message(&OwnedMessage::Pong(x.clone())).map_err(Error::from)?;
+ }
+
+ let res = match message {
OwnedMessage::Binary(bytes) => {
let value = serde_json::from_reader(ZlibDecoder::new(&bytes[..]))?;
- decode(value).map_err(|why| {
+ Some(decode(value).map_err(|why| {
let s = String::from_utf8_lossy(&bytes);
warn!("(╯°□°)╯︵ ┻━┻ Error decoding: {}", s);
why
- })
+ }))
},
OwnedMessage::Close(data) => {
- Err(Error::Gateway(GatewayError::Closed(data)))
+ Some(Err(Error::Gateway(GatewayError::Closed(data))))
},
OwnedMessage::Text(payload) => {
let value = serde_json::from_str(&payload)?;
- decode(value).map_err(|why| {
+ Some(decode(value).map_err(|why| {
warn!("(╯°□°)╯︵ ┻━┻ Error decoding: {}", payload);
why
- })
+ }))
},
- OwnedMessage::Ping(x) | OwnedMessage::Pong(x) => {
- warn!("Unexpectly got ping/pong: {:?}", x);
-
- Err(Error::Gateway(GatewayError::Closed(None)))
- },
- }
+ OwnedMessage::Ping(..) | OwnedMessage::Pong(..) => None,
+ };
+
+ res.unwrap()
}
}