mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-27 02:24:18 +00:00
Add timeout argument to Pathod, and matching -t command-line option.
This commit is contained in:
parent
8bb81be2b0
commit
915bcfbd30
@ -145,7 +145,7 @@ class PathodHandler(tcp.BaseHandler):
|
|||||||
)
|
)
|
||||||
self.info(s)
|
self.info(s)
|
||||||
return
|
return
|
||||||
|
self.settimeout(self.server.timeout)
|
||||||
while not self.finished:
|
while not self.finished:
|
||||||
if not self.handle_request():
|
if not self.handle_request():
|
||||||
return
|
return
|
||||||
@ -155,7 +155,8 @@ class Pathod(tcp.TCPServer):
|
|||||||
LOGBUF = 500
|
LOGBUF = 500
|
||||||
def __init__( self,
|
def __init__( self,
|
||||||
addr, ssloptions=None, craftanchor="/p/", staticdir=None, anchors=None,
|
addr, ssloptions=None, craftanchor="/p/", staticdir=None, anchors=None,
|
||||||
sizelimit=None, noweb=False, nocraft=False, noapi=False, nohang=False
|
sizelimit=None, noweb=False, nocraft=False, noapi=False, nohang=False,
|
||||||
|
timeout=None
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
addr: (address, port) tuple. If port is 0, a free port will be
|
addr: (address, port) tuple. If port is 0, a free port will be
|
||||||
@ -175,6 +176,7 @@ class Pathod(tcp.TCPServer):
|
|||||||
self.craftanchor = craftanchor
|
self.craftanchor = craftanchor
|
||||||
self.sizelimit = sizelimit
|
self.sizelimit = sizelimit
|
||||||
self.noweb, self.nocraft, self.noapi, self.nohang = noweb, nocraft, noapi, nohang
|
self.noweb, self.nocraft, self.noapi, self.nohang = noweb, nocraft, noapi, nohang
|
||||||
|
self.timeout = timeout
|
||||||
if not noapi:
|
if not noapi:
|
||||||
app.api()
|
app.api()
|
||||||
self.app = app.app
|
self.app = app.app
|
||||||
@ -224,6 +226,14 @@ class Pathod(tcp.TCPServer):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
except tcp.NetLibTimeout: # pragma: no cover
|
||||||
|
h.info("Timeout")
|
||||||
|
self.add_log(
|
||||||
|
dict(
|
||||||
|
type = "timeout",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
def add_log(self, d):
|
def add_log(self, d):
|
||||||
if not self.noapi:
|
if not self.noapi:
|
||||||
|
7
pathod
7
pathod
@ -88,7 +88,8 @@ def main(parser, args):
|
|||||||
noweb = args.noweb,
|
noweb = args.noweb,
|
||||||
nocraft = args.nocraft,
|
nocraft = args.nocraft,
|
||||||
noapi = args.noapi,
|
noapi = args.noapi,
|
||||||
nohang = args.nohang
|
nohang = args.nohang,
|
||||||
|
timeout = args.timeout
|
||||||
)
|
)
|
||||||
except pathod.PathodError, v:
|
except pathod.PathodError, v:
|
||||||
parser.error(str(v))
|
parser.error(str(v))
|
||||||
@ -134,6 +135,10 @@ if __name__ == "__main__":
|
|||||||
"-s", dest='ssl', default=False, action="store_true",
|
"-s", dest='ssl', default=False, action="store_true",
|
||||||
help='Serve with SSL.'
|
help='Serve with SSL.'
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-t", dest="timeout", type=int, default=None,
|
||||||
|
help="Connection timeout"
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--limit-size", dest='sizelimit', default=None, type=str,
|
"--limit-size", dest='sizelimit', default=None, type=str,
|
||||||
help='Size limit of served responses. Understands size suffixes, i.e. 100k.'
|
help='Size limit of served responses. Understands size suffixes, i.e. 100k.'
|
||||||
|
@ -34,6 +34,15 @@ class TestNoWeb(tutils.DaemonTests):
|
|||||||
assert self.getpath("/").status_code == 800
|
assert self.getpath("/").status_code == 800
|
||||||
|
|
||||||
|
|
||||||
|
class TestTimeout(tutils.DaemonTests):
|
||||||
|
timeout = 0.1
|
||||||
|
def test_noweb(self):
|
||||||
|
# FIXME: Add float values to spec language, reduce test timeout to
|
||||||
|
# increase test performance
|
||||||
|
assert self.get("200:p1,1").status_code == 200
|
||||||
|
assert self.d.last_log()["type"] == "timeout"
|
||||||
|
|
||||||
|
|
||||||
class TestNoApi(tutils.DaemonTests):
|
class TestNoApi(tutils.DaemonTests):
|
||||||
noapi = True
|
noapi = True
|
||||||
def test_noapi(self):
|
def test_noapi(self):
|
||||||
|
@ -8,6 +8,7 @@ class DaemonTests:
|
|||||||
noapi = False
|
noapi = False
|
||||||
nohang = False
|
nohang = False
|
||||||
ssl = False
|
ssl = False
|
||||||
|
timeout = None
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpAll(self):
|
def setUpAll(self):
|
||||||
self.d = test.Daemon(
|
self.d = test.Daemon(
|
||||||
@ -17,7 +18,8 @@ class DaemonTests:
|
|||||||
sizelimit=1*1024*1024,
|
sizelimit=1*1024*1024,
|
||||||
noweb = self.noweb,
|
noweb = self.noweb,
|
||||||
noapi = self.noapi,
|
noapi = self.noapi,
|
||||||
nohang = self.nohang
|
nohang = self.nohang,
|
||||||
|
timeout = self.timeout,
|
||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
Loading…
Reference in New Issue
Block a user