diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py
index 1aa57e95dfb40dfb0bfbc27d87b1092777d086bf..d8938240dec63e07124777be14b649dcff82b35a 100644
--- a/src/common/connection_handlers.py
+++ b/src/common/connection_handlers.py
@@ -2179,11 +2179,17 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 				keyID, timestamp, None))
 
 		if ptype == 'unavailable' and jid_stripped in self.sessions:
-			# automatically terminate sessions that they haven't sent a thread ID in
+			# automatically terminate sessions that they haven't sent a thread ID
+			# in, only if other part support thread ID
 			for sess in self.sessions[jid_stripped].values():
 				if not sess.received_thread_id:
-					sess.terminate()
-					del self.sessions[jid_stripped][sess.thread_id]
+					contact = gajim.contacts.get_contact(self.name, jid_stripped)
+
+					session_supported = gajim.capscache.is_supported(contact,
+						common.xmpp.NS_ESESSION)
+					if session_supported:
+						sess.terminate()
+						del self.sessions[jid_stripped][sess.thread_id]
 
 		if avatar_sha is not None and ptype != 'error':
 			if jid_stripped not in self.vcard_shas: