diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py
index fef1187ae52c393bc98cdd30dffa0db51592d6db..0924b086984b1a905fb18ef052f43d47d6b76324 100755
--- a/src/common/zeroconf/zeroconf.py
+++ b/src/common/zeroconf/zeroconf.py
@@ -67,8 +67,10 @@ class Zeroconf:
 	
 	def error_callback(self, err):
 		gajim.log.debug(str(err))
-		self.disconnect()
-		self.disconnected_CB()
+		# timeouts are non-critical
+		if str(err) != 'Timeout reached':
+			self.disconnect()
+			self.disconnected_CB()
 
 	def new_service_callback(self, interface, protocol, name, stype, domain, flags):
 		gajim.log.debug('Found service %s in domain %s on %i.%i.' % (name, domain, interface, protocol))
diff --git a/src/roster_window.py b/src/roster_window.py
index d2df47b8ff1d59ba671e233162278b990e1f9e51..0d623b39c17146b19199576ff1d7554054d2ebb1 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -3584,11 +3584,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
 		if account_dest == 'all':
 			# drop on account row in merged mode: we can't know which account it is
 			return
-		
-		if account_dest == gajim.ZEROCONF_ACC_NAME:
-			# drop on zeroconf account, no contact adds possible
-			return
-
+	
 		# if account is not connected, do nothing
 		if gajim.connections[account_dest].connected < 2:
 			return
@@ -3614,6 +3610,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
 						account_dest, c_dest, path)
 			return
 
+		if account_dest == gajim.ZEROCONF_ACC_NAME:
+			# drop on zeroconf account, no contact adds possible
+			return
+
 		if position == gtk.TREE_VIEW_DROP_BEFORE and len(path_dest) == 2:
 			# dropped before a group : we drop it in the previous group
 			path_dest = (path_dest[0], path_dest[1]-1)