diff --git a/src/common/logger.py b/src/common/logger.py
index 19c816f64fa4285c87573ddf023ac1085d4f1c87..40084819425d832986501f478ac32e8128829057 100644
--- a/src/common/logger.py
+++ b/src/common/logger.py
@@ -169,19 +169,21 @@ class Logger:
 				jid = jid.split('/', 1)[0] # remove the resource
 		if jid in self.jids_already_in: # we already have jids in DB
 			self.cur.execute('SELECT jid_id FROM jids WHERE jid=?', [jid])
-			jid_id = self.cur.fetchone()[0]
-		else: # oh! a new jid :), we add it now
-			if typestr == 'ROOM':
-				typ = constants.JID_ROOM_TYPE
-			else:
-				typ = constants.JID_NORMAL_TYPE
-			self.cur.execute('INSERT INTO jids (jid, type) VALUES (?, ?)', (jid, typ))
-			try:
-				self.con.commit()
-			except sqlite.OperationalError, e:
-				print >> sys.stderr, str(e)
-			jid_id = self.cur.lastrowid
-			self.jids_already_in.append(jid)
+			row = self.cur.fetchone()
+			if row:
+				return row[0]
+		# oh! a new jid :), we add it now
+		if typestr == 'ROOM':
+			typ = constants.JID_ROOM_TYPE
+		else:
+			typ = constants.JID_NORMAL_TYPE
+		self.cur.execute('INSERT INTO jids (jid, type) VALUES (?, ?)', (jid, typ))
+		try:
+			self.con.commit()
+		except sqlite.OperationalError, e:
+			print >> sys.stderr, str(e)
+		jid_id = self.cur.lastrowid
+		self.jids_already_in.append(jid)
 		return jid_id
 	
 	def convert_human_values_to_db_api_values(self, kind, show):