From fc1a9a5712b1f46bcd2390e798147f3855042b96 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Sun, 30 Dec 2018 13:35:01 +0100 Subject: Improve ping timeouts, add debug output for XmlErrors and ping timeouts --- libdino/src/service/connection_manager.vala | 6 +++++- libdino/src/service/file_manager.vala | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'libdino/src') diff --git a/libdino/src/service/connection_manager.vala b/libdino/src/service/connection_manager.vala index 67763ad3..977fc732 100644 --- a/libdino/src/service/connection_manager.vala +++ b/libdino/src/service/connection_manager.vala @@ -232,6 +232,7 @@ public class ConnectionManager : Object { private void check_reconnect(Account account) { bool acked = false; + DateTime? last_activity_was = connections[account].last_activity != null ? connections[account].last_activity : null; XmppStream stream = connections[account].stream; stream.get_module(Xep.Ping.Module.IDENTITY).send_ping(stream, account.bare_jid.domain_jid, () => { @@ -240,10 +241,13 @@ public class ConnectionManager : Object { change_connection_state(account, ConnectionState.CONNECTED); }); - Timeout.add_seconds(5, () => { + Timeout.add_seconds(10, () => { if (connections[account].stream != stream) return false; if (acked) return false; + if (connections[account].last_activity != last_activity_was) return false; + // Reconnect. Nothing gets through the stream. + print(@"[$(account.bare_jid)] Ping timeouted. Reconnecting\n"); change_connection_state(account, ConnectionState.DISCONNECTED); try { connections[account].stream.disconnect(); diff --git a/libdino/src/service/file_manager.vala b/libdino/src/service/file_manager.vala index 861c51da..241bcebf 100644 --- a/libdino/src/service/file_manager.vala +++ b/libdino/src/service/file_manager.vala @@ -144,7 +144,7 @@ public class FileManager : StreamInteractionModule, Object { if (!is_sender_trustworthy(file_transfer, conversation)) return; if (file_transfer.size == -1) { - file_provider.get_meta_info(file_transfer); + yield file_provider.get_meta_info(file_transfer); } if (file_transfer.size >= 0 && file_transfer.size < 5000000) { -- cgit v1.2.3-70-g09d2