diff --git a/gajim/gui_interface.py b/gajim/gui_interface.py
index 60205245bfaeeda506c41cd3c9f0e61b393d2c84..d79066013c14596fd47ef85788e747f8904ca3c8 100644
--- a/gajim/gui_interface.py
+++ b/gajim/gui_interface.py
@@ -2342,14 +2342,10 @@ class Interface:
             # Otherwise, an exception will stop our loop
 
             if sys.platform == 'win32':
-                # On Windows process() calls select.select(), so we need this
-                # executed on each mainloop cycle
-                # On Linux only timeouts are checked in process(), so we use
-                # a timeout
-                GLib.idle_add(self.process_connections)
-                raise
+                timeout, in_seconds = 20, None
+            else:
+                timeout, in_seconds = app.idlequeue.PROCESS_TIMEOUT
 
-            timeout, in_seconds = app.idlequeue.PROCESS_TIMEOUT
             if in_seconds:
                 GLib.timeout_add_seconds(timeout, self.process_connections)
             else:
@@ -2636,16 +2632,15 @@ class Interface:
         self.instances['file_transfers'] = dialogs.FileTransfersWindow()
 
         GLib.timeout_add(100, self.autoconnect)
-
         if sys.platform == 'win32':
-            GLib.idle_add(self.process_connections)
+            timeout, in_seconds = 20, None
         else:
             timeout, in_seconds = app.idlequeue.PROCESS_TIMEOUT
-            if in_seconds:
-                GLib.timeout_add_seconds(timeout, self.process_connections)
-            else:
-                GLib.timeout_add(self.process_connections)
 
+        if in_seconds:
+            GLib.timeout_add_seconds(timeout, self.process_connections)
+        else:
+            GLib.timeout_add(timeout, self.process_connections)
         GLib.timeout_add_seconds(app.config.get(
                 'check_idle_every_foo_seconds'), self.read_sleepy)