From 09e995ab5c78b8bd098e1330df7aa40972e0b1bb Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 14 Mar 2015 11:54:47 +1100 Subject: [PATCH] Improvements to pathoc repeat requests - Pathoc will now keep trying if connections failed - Add a -w option to specify a wait time between requests --- libpathod/cmdline.py | 4 ++++ libpathod/pathoc.py | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libpathod/cmdline.py b/libpathod/cmdline.py index 4a2390ed9..7a82a429d 100644 --- a/libpathod/cmdline.py +++ b/libpathod/cmdline.py @@ -50,6 +50,10 @@ def go_pathoc(): "-n", dest='repeat', default=1, type=int, metavar="N", help='Repeat N times. If 0 repeat for ever.' ) + parser.add_argument( + "-w", dest='wait', default=0, type=float, metavar="N", + help='Wait N seconds between each request.' + ) parser.add_argument( "-r", dest="random", action="store_true", default=False, help=""" diff --git a/libpathod/pathoc.py b/libpathod/pathoc.py index e7aff5202..d6b2c7a21 100644 --- a/libpathod/pathoc.py +++ b/libpathod/pathoc.py @@ -2,12 +2,15 @@ import sys import os import hashlib import random +import time + +import OpenSSL.crypto + from netlib import tcp, http, certutils import netlib.utils import language import utils -import OpenSSL.crypto class PathocError(Exception): @@ -226,9 +229,13 @@ def main(args): try: cnt = 0 while 1: + if cnt == args.repeat and args.repeat != 0: + break if trycount > args.memolimit: print >> sys.stderr, "Memo limit exceeded..." return + if args.wait and cnt != 0: + time.sleep(args.wait) cnt += 1 if args.random: @@ -262,7 +269,10 @@ def main(args): trycount = 0 try: p.connect(args.connect_to) - except (tcp.NetLibError, PathocError), v: + except tcp.NetLibError, v: + print >> sys.stderr, str(v) + continue + except PathocError, v: print >> sys.stderr, str(v) sys.exit(1) if args.timeout: @@ -281,7 +291,5 @@ def main(args): sys.stdout.flush() if ret and args.oneshot: sys.exit(0) - if cnt == args.repeat: - break except KeyboardInterrupt: pass