Commit 02355bce by fwkz

Stopping ThreadPoolExecution from within target function.

parent a1153f67
...@@ -4,3 +4,7 @@ class RoutersploitException(Exception): ...@@ -4,3 +4,7 @@ class RoutersploitException(Exception):
class OptionValidationError(RoutersploitException): class OptionValidationError(RoutersploitException):
pass pass
class StopThreadPoolExecutor(RoutersploitException):
pass
...@@ -10,6 +10,7 @@ except ImportError: ...@@ -10,6 +10,7 @@ except ImportError:
import Queue as queue import Queue as queue
from . import utils from . import utils
from .exceptions import StopThreadPoolExecutor
data_queue = queue.Queue() data_queue = queue.Queue()
...@@ -27,6 +28,10 @@ class WorkerThread(threading.Thread): ...@@ -27,6 +28,10 @@ class WorkerThread(threading.Thread):
args = record[1:] args = record[1:]
try: try:
target(*args) target(*args)
except StopThreadPoolExecutor:
utils.print_info()
utils.print_status("Waiting for already scheduled jobs to finish...")
data_queue.queue.clear()
finally: finally:
data_queue.task_done() data_queue.task_done()
...@@ -57,10 +62,10 @@ class ThreadPoolExecutor(object): ...@@ -57,10 +62,10 @@ class ThreadPoolExecutor(object):
utils.print_info() utils.print_info()
utils.print_status("Waiting for already scheduled jobs to finish...") utils.print_status("Waiting for already scheduled jobs to finish...")
data_queue.queue.clear() data_queue.queue.clear()
finally:
for worker in self.workers: for worker in self.workers:
worker.join() worker.join()
else: data_queue.unfinished_tasks = 0
data_queue.join()
utils.print_status('Elapsed time: ', time.time() - start, 'seconds') utils.print_status('Elapsed time: ', time.time() - start, 'seconds')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment