diff --git a/libpathod/cmdline.py b/libpathod/cmdline.py index 22205fb7a..06a6c533c 100644 --- a/libpathod/cmdline.py +++ b/libpathod/cmdline.py @@ -65,6 +65,17 @@ def args_pathoc(argv, stdout=sys.stdout, stderr=sys.stderr): "-t", dest="timeout", type=int, default=None, help="Connection timeout" ) + parser.add_argument( + "--http2", dest="use_http2", action="store_true", default=False, + help='Perform all requests over a single HTTP/2 connection.' + ) + parser.add_argument( + "--http2-skip-connection-preface", + dest="http2_skip_connection_preface", + action="store_true", + default=False, + help='Skips the HTTP/2 connection preface before sending requests.') + parser.add_argument( 'host', type=str, metavar = "host[:port]", @@ -77,6 +88,7 @@ def args_pathoc(argv, stdout=sys.stdout, stderr=sys.stderr): specifcations """ ) + group = parser.add_argument_group( 'SSL', ) @@ -189,7 +201,7 @@ def args_pathoc(argv, stdout=sys.stdout, stderr=sys.stderr): data = open(r).read() r = data try: - reqs.append(language.parse_pathoc(r)) + reqs.append(language.parse_pathoc(r, args.use_http2)) except language.ParseException as v: print >> stderr, "Error parsing request spec: %s" % v.msg print >> stderr, v.marked() diff --git a/libpathod/pathoc.py b/libpathod/pathoc.py index 4efa04474..72c2db3c1 100644 --- a/libpathod/pathoc.py +++ b/libpathod/pathoc.py @@ -150,6 +150,10 @@ class Pathoc(tcp.TCPClient): clientcert=None, ciphers=None, + # HTTP/2 + use_http2=False, + http2_skip_connection_preface=False, + # Websockets ws_read_limit = None, @@ -189,6 +193,9 @@ class Pathoc(tcp.TCPClient): self.ciphers = ciphers self.sslinfo = None + self.use_http2 = use_http2 + self.http2_skip_connection_preface = http2_skip_connection_preface + self.ws_read_limit = ws_read_limit self.timeout = timeout @@ -407,6 +414,8 @@ def main(args): # pragma: nocover sslversion = args.sslversion, clientcert = args.clientcert, ciphers = args.ciphers, + use_http2 = args.use_http2, + http2_skip_connection_preface = args.http2_skip_connection_preface, showreq = args.showreq, showresp = args.showresp, explain = args.explain,