fixed threading bug (difflib :)

This commit is contained in:
Miroslav Stampar 2010-03-10 14:14:27 +00:00
parent 6712b19df2
commit 91dd609e26
3 changed files with 9 additions and 0 deletions

View File

@ -957,6 +957,7 @@ def __setConfAttributes():
conf.scheme = None
#conf.seqMatcher = difflib.SequenceMatcher(lambda x: x in " \t")
conf.seqMatcher = difflib.SequenceMatcher(None)
conf.seqLock = None
conf.sessionFP = None
conf.start = True
conf.threadException = False

View File

@ -65,9 +65,15 @@ def comparison(page, headers=None, getSeqMatcher=False):
else:
return False
if conf.seqLock:
conf.seqLock.acquire()
conf.seqMatcher.set_seq2(page)
ratio = round(conf.seqMatcher.ratio(), 3)
if conf.seqLock:
conf.seqLock.release()
# If the url is stable and we did not set yet the match ratio and the
# current injected value changes the url page content
if conf.matchRatio is None:

View File

@ -153,6 +153,7 @@ def bisection(payload, expression, length=None, charsetType=None, firstChar=None
index = [ firstChar ] # As list for python nested function scoping
idxlock = threading.Lock()
iolock = threading.Lock()
conf.seqLock = threading.Lock()
def downloadThread():
try:
@ -237,6 +238,7 @@ def bisection(payload, expression, length=None, charsetType=None, firstChar=None
if conf.verbose >= 1 and not showEta and infoMsg:
dataToStdout(infoMsg)
conf.seqLock = None
else:
index = firstChar