Disconnect on account events

This commit is contained in:
Joscha 2022-08-22 18:12:34 +02:00
parent 516bb82323
commit 01a442c1f0

View file

@ -18,7 +18,7 @@ use tokio_tungstenite::{tungstenite, MaybeTlsStream, WebSocketStream};
use crate::api::packet::{Command, Packet, ParsedPacket}; use crate::api::packet::{Command, Packet, ParsedPacket};
use crate::api::{ use crate::api::{
BounceEvent, Data, HelloEvent, PersonalAccountView, Ping, PingReply, SessionView, BounceEvent, Data, HelloEvent, LoginReply, PersonalAccountView, Ping, PingReply, SessionView,
SnapshotEvent, Time, UserId, SnapshotEvent, Time, UserId,
}; };
use crate::replies::{self, PendingReply, Replies}; use crate::replies::{self, PendingReply, Replies};
@ -300,6 +300,21 @@ impl State {
} }
Status::Joined(joined) => joined.on_data(data), Status::Joined(joined) => joined.on_data(data),
} }
// The euphoria server doesn't always disconnect the client
// when it would make sense to do so or when the API
// specifies it should. This ensures we always disconnect
// when it makes sense to do so.
match data {
Data::DisconnectEvent(_) => return Err("received disconnect-event".into()),
Data::LoginEvent(_) => return Err("received login-event".into()),
Data::LogoutEvent(_) => return Err("received logout-event".into()),
Data::LoginReply(LoginReply { success: true, .. }) => {
return Err("received successful login-reply".into())
}
Data::LogoutReply(_) => return Err("received logout-reply".into()),
_ => {}
}
} }
// Shovel packets into self.packet_tx // Shovel packets into self.packet_tx