mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-29 13:03:50 +03:00
minor improvement of HashDB
This commit is contained in:
parent
323aa7bf2f
commit
47b27a5988
|
@ -21,7 +21,7 @@ class HashDB(object):
|
||||||
threadData = getCurrentThreadData()
|
threadData = getCurrentThreadData()
|
||||||
|
|
||||||
if threadData.hashDBCursor is None:
|
if threadData.hashDBCursor is None:
|
||||||
connection = sqlite3.connect(self.filepath, isolation_level=None)
|
connection = sqlite3.connect(self.filepath, timeout=3, isolation_level=None)
|
||||||
threadData.hashDBCursor = connection.cursor()
|
threadData.hashDBCursor = connection.cursor()
|
||||||
threadData.hashDBCursor.execute("CREATE TABLE IF NOT EXISTS storage (id INTEGER PRIMARY KEY, value TEXT)")
|
threadData.hashDBCursor.execute("CREATE TABLE IF NOT EXISTS storage (id INTEGER PRIMARY KEY, value TEXT)")
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ class HashDB(object):
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
try:
|
try:
|
||||||
self.endTransaction()
|
|
||||||
self.cursor.connection.close()
|
self.cursor.connection.close()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
@ -48,14 +47,28 @@ class HashDB(object):
|
||||||
retVal = None
|
retVal = None
|
||||||
if key:
|
if key:
|
||||||
hash_ = self.hashKey(key)
|
hash_ = self.hashKey(key)
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
for row in self.cursor.execute("SELECT value FROM storage WHERE id=?", (hash_,)):
|
for row in self.cursor.execute("SELECT value FROM storage WHERE id=?", (hash_,)):
|
||||||
retVal = row[0]
|
retVal = row[0]
|
||||||
|
except sqlite3.OperationalError, ex:
|
||||||
|
if not 'locked' in ex.message:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
break
|
||||||
return retVal
|
return retVal
|
||||||
|
|
||||||
def write(self, key, value):
|
def write(self, key, value):
|
||||||
if key:
|
if key:
|
||||||
hash_ = self.hashKey(key)
|
hash_ = self.hashKey(key)
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
self.cursor.execute("INSERT INTO storage VALUES (?, ?)", (hash_, value,))
|
self.cursor.execute("INSERT INTO storage VALUES (?, ?)", (hash_, value,))
|
||||||
except sqlite3.IntegrityError:
|
except sqlite3.IntegrityError:
|
||||||
self.cursor.execute("UPDATE storage SET value=? WHERE id=?", (value, hash_,))
|
self.cursor.execute("UPDATE storage SET value=? WHERE id=?", (value, hash_,))
|
||||||
|
except sqlite3.OperationalError, ex:
|
||||||
|
if not 'locked' in ex.message:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
Loading…
Reference in New Issue
Block a user