improve handling of socket close (#31)

This commit is contained in:
ouwou
2021-07-10 02:23:34 -04:00
parent 9f66990af2
commit fa87adb4a3

View File

@@ -44,6 +44,7 @@ void DiscordClient::Stop() {
m_heartbeat_waiter.kill();
if (m_heartbeat_thread.joinable()) m_heartbeat_thread.join();
m_client_connected = false;
m_reconnecting = false;
m_store.ClearAll();
m_guild_to_users.clear();
@@ -1682,7 +1683,7 @@ void DiscordClient::HandleGatewayInvalidSession(const GatewayMessage &msg) {
m_websocket.Stop(1000);
m_websocket.StartConnection(GetGatewayURL());
Glib::signal_timeout().connect_once([this] { m_websocket.StartConnection(GetGatewayURL()); }, 1000);
}
bool IsCompleteMessageObject(const nlohmann::json &j) {
@@ -1886,6 +1887,11 @@ void DiscordClient::HandleSocketClose(uint16_t code) {
m_store.ClearAll();
m_guild_to_users.clear();
if (!m_reconnecting && close_code != GatewayCloseCode::Normal) {
Glib::signal_timeout().connect_once([this] { HandleGatewayReconnect(GatewayMessage()); }, 1000);
m_reconnecting = true;
}
m_signal_disconnected.emit(m_reconnecting, close_code);
};
m_generic_mutex.lock();