diff --git a/src/common/connection.py b/src/common/connection.py
index f3e695530378f7067806e2a899598a2add3cb13b..886e1f4cf56064af0f7f072fb14a83ef13d693c6 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -1309,8 +1309,8 @@ class Connection(CommonConnection, ConnectionHandlers):
 
 	def _on_xmpp_ping_answer(self, iq_obj):
 		id_ = unicode(iq_obj.getAttr('id'))
-		if id_ == self.awaiting_xmpp_ping_id: 
-			self.awaiting_xmpp_ping_id = None
+		assert id_ == self.awaiting_xmpp_ping_id
+		self.awaiting_xmpp_ping_id = None
 
 	def sendPing(self, pingTo=None):
 		"""
@@ -2226,6 +2226,7 @@ class Connection(CommonConnection, ConnectionHandlers):
 	def check_pingalive(self):
 		if self.awaiting_xmpp_ping_id:
 			# We haven't got the pong in time, disco and reconnect
+			log.warn("No reply received for keepalive ping. Reconnecting.")
 			self._disconnectedReconnCB()
 
 	def _reconnect_alarm(self):
diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py
index 3ddd073ddc60977a95490facc6299da7eab4c8bd..b02bf622929b0031fb847d4c0a30ceb69d637e75 100644
--- a/src/common/connection_handlers.py
+++ b/src/common/connection_handlers.py
@@ -981,8 +981,6 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream,
 			self.dispatch('ENTITY_TIME', (jid_stripped, resource, ''))
 			self.entity_time_ids.remove(id_)
 			return
-		if id_ == self.awaiting_xmpp_ping_id:
-			self.awaiting_xmpp_ping_id = None
 		errmsg = iq_obj.getErrorMsg()
 		errcode = iq_obj.getErrorCode()
 		self.dispatch('ERROR_ANSWER', (id_, jid_from, errmsg, errcode))