implemented suppressResumeInfo mechanism (huge slowdown on large tables)

This commit is contained in:
Miroslav Stampar
2011-04-22 19:58:10 +00:00
parent 493b9adf8e
commit f88aa4b165
5 changed files with 83 additions and 58 deletions

View File

@@ -35,6 +35,7 @@ from lib.core.enums import PAYLOAD
from lib.core.exception import sqlmapConnectionException
from lib.core.settings import FROM_TABLE
from lib.core.settings import MYSQL_ERROR_CHUNK_LENGTH
from lib.core.settings import TURN_OFF_RESUME_INFO_LIMIT
from lib.core.threads import getCurrentThreadData
from lib.core.unescaper import unescaper
from lib.request.connect import Connect as Request
@@ -301,6 +302,12 @@ def errorUse(expression, expected=None, resumeValue=True, dump=False):
logger.info(infoMsg)
try:
if stopLimit > TURN_OFF_RESUME_INFO_LIMIT:
kb.suppressResumeInfo = True
infoMsg = "suppressing resume console info because of "
infoMsg += "large number of rows (possible slowdown)"
logger.info(infoMsg)
for num in xrange(startLimit, stopLimit):
output = __errorFields(expression, expressionFields, expressionFieldsList, expected, num, resumeValue)
@@ -320,6 +327,9 @@ def errorUse(expression, expected=None, resumeValue=True, dump=False):
errMsg += "'%s'" % e
logger.critical(errMsg)
finally:
kb.suppressResumeInfo = False
if not outputs:
outputs = __errorFields(expression, expressionFields, expressionFieldsList)