aboutsummaryrefslogtreecommitdiff
path: root/libdino/src
diff options
context:
space:
mode:
Diffstat (limited to 'libdino/src')
-rw-r--r--libdino/src/service/connection_manager.vala6
-rw-r--r--libdino/src/service/file_manager.vala2
2 files changed, 6 insertions, 2 deletions
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) {