X-Git-Url: https://git.distorted.org.uk/~mdw/hippotat/blobdiff_plain/7ec61cc0d1b67ffaf5e5e68a43b8aa5a1dfeb43a..d41617043a477168c2460e00e6099528219c7163:/hippotat diff --git a/hippotat b/hippotat index 248538e..abe1cae 100755 --- a/hippotat +++ b/hippotat @@ -30,9 +30,10 @@ import twisted.web.client import io class GeneralResponseConsumer(twisted.internet.protocol.Protocol): - def __init__(self, cl, req, desc): + def __init__(self, cl, req, resp, desc): self._cl = cl self._req = req + self._resp = resp self._desc = desc def _log(self, dflag, msg, **kwargs): @@ -42,8 +43,8 @@ class GeneralResponseConsumer(twisted.internet.protocol.Protocol): self._log(DBG.HTTP_CTRL, 'connectionMade') class ResponseConsumer(GeneralResponseConsumer): - def __init__(self, cl, req): - super().__init__(cl, req, 'RC') + def __init__(self, cl, req, resp): + super().__init__(cl, req, resp, 'RC') ssddesc = '[%s] %s' % (id(req), self._desc) self._ssd = SlipStreamDecoder(ssddesc, partial(queue_inbound, cl.ipif)) self._log(DBG.HTTP_CTRL, '__init__') @@ -56,9 +57,10 @@ class ResponseConsumer(GeneralResponseConsumer): self._handleexception() def connectionLost(self, reason): - self._log(DBG.HTTP_CTRL, 'connectionLost ' + str(reason)) + reason_msg = 'connectionLost ' + str(reason) + self._log(DBG.HTTP_CTRL, reason_msg) if not reason.check(twisted.web.client.ResponseDone): - self.latefailure() + self._latefailure(reason_msg) return try: self._log(DBG.HTTP, 'ResponseDone') @@ -77,8 +79,7 @@ class ResponseConsumer(GeneralResponseConsumer): class ErrorResponseConsumer(GeneralResponseConsumer): def __init__(self, cl, req, resp): - super().__init__(cl, req, 'ERROR-RC') - self._resp = resp + super().__init__(cl, req, resp, 'ERROR-RC') self._m = b'' try: self._phrase = resp.phrase.decode('utf-8') @@ -138,7 +139,7 @@ class Client(): 'req_ok %d %s %s' % (resp.code, repr(resp.phrase), str(resp)), idof=req) if resp.code == 200: - rc = ResponseConsumer(cl, req) + rc = ResponseConsumer(cl, req, resp) else: rc = ErrorResponseConsumer(cl, req, resp) @@ -150,6 +151,7 @@ class Client(): # later, by ResponsConsumer or ErrorResponsConsumer try: cl.log(DBG.HTTP_CTRL, 'req_err ' + str(err), idof=req) + cl.running_reported = False if isinstance(err, twisted.python.failure.Failure): err = err.getTraceback() print('%s[%#x] %s' % (cl.desc, id(req), err.strip('\n').replace('\n',' / ')), @@ -185,13 +187,15 @@ class Client(): d = mime_translate(d) + token = authtoken_make(cl.c.secret) + crlf = b'\r\n' lf = b'\n' mime = (b'--b' + crlf + b'Content-Type: text/plain; charset="utf-8"' + crlf + b'Content-Disposition: form-data; name="m"' + crlf + crlf + str(cl.c.client) .encode('ascii') + crlf + - cl.c.password + crlf + + token + crlf + str(cl.c.target_requests_outstanding) .encode('ascii') + crlf + str(cl.c.http_timeout) .encode('ascii') + crlf +