diff --git a/minode/connection.py b/minode/connection.py index 0d802d6..fbd0306 100644 --- a/minode/connection.py +++ b/minode/connection.py @@ -477,7 +477,7 @@ class Connection(ConnectionBase): logging.debug('%s:%s -> %s', self.host_print, self.port, obj) self.vectors_requested.pop(obj.vector, None) self.vectors_to_get.discard(obj.vector) - if obj.is_valid() and obj.vector not in shared.objects: + if obj.is_valid(): shared.objects[obj.vector] = obj if ( obj.object_type == shared.i2p_dest_obj_type diff --git a/minode/sql.py b/minode/sql.py index 33fd2ee..1eee6bd 100644 --- a/minode/sql.py +++ b/minode/sql.py @@ -131,11 +131,14 @@ class Inventory(): def __setitem__(self, vector, obj): with shared.objects_lock: - cur = self._db.execute( - 'INSERT INTO objects VALUES (?,?,?,?,?,?,?,?)', ( - vector, obj.expires_time, obj.object_type, obj.version, - obj.stream_number, obj.tag, obj.data, obj.offset - )) + try: + cur = self._db.execute( + 'INSERT INTO objects VALUES (?,?,?,?,?,?,?,?)', ( + vector, obj.expires_time, obj.object_type, obj.version, + obj.stream_number, obj.tag, obj.data, obj.offset + )) + except (sqlite3.DatabaseError, sqlite3.IntegrityError): + return self._db.commit() self.rowid = cur.lastrowid