diff --git a/pywss/__init__.py b/pywss/__init__.py index e2594ab..cde54ca 100644 --- a/pywss/__init__.py +++ b/pywss/__init__.py @@ -632,9 +632,10 @@ def openapi( def handler_request(self, request: socket.socket, address: tuple) -> None: log = self.log + keepalive = True try: rfd = request.makefile("rb", -1) - while True: + while keepalive: http_method, http_url, http_version, err = parse_request_line(rfd) if err: request.sendall(b"HTTP/1.1 400 BadRequest\r\n") @@ -650,7 +651,7 @@ def handler_request(self, request: socket.socket, address: tuple) -> None: return # check keep alive if http_headers.get(HeaderConnection, "").lower() == "close": - break + keepalive = False # full match handlers = self.full_match_routes.get(method_route, None) # parser match diff --git a/pywss/testing.py b/pywss/testing.py index 8cd6aa7..e53953a 100644 --- a/pywss/testing.py +++ b/pywss/testing.py @@ -39,13 +39,15 @@ def __init__(self, app): self.method = None self.path = None self.body = None - self.headers = dict() + self.headers = { + "Pywss-Http-Test": "0.0.1", + "Connection": "close", + } self.app.build() def request(self, method, route, headers=None, json=None, data=""): self.method = method self.path = route - self.set_header("Pywss-Http-Test", "0.0.1") self.set_headers(headers or {}) if json: self.set_headers({"Content-Type": "application/json"}) @@ -58,10 +60,7 @@ def request(self, method, route, headers=None, json=None, data=""): return self.build() def set_header(self, k, v): - header = [] - for key in k.split("-"): - header.append(key[0].upper() + key[1:].lower()) - self.headers["-".join(header)] = v + self.headers[k.title()] = v return self def set_headers(self, headers): @@ -81,7 +80,6 @@ def build(self) -> HttpTestResponse: s, c = socket.socketpair() with s, c: c.sendall(req_message.encode()) - c.sendall("GET / HTTP/1.1\r\nConnection: close\r\n\r\n".encode()) self.app.handler_request(s, None) resp = c.makefile("rb", -1) return HttpTestResponse(resp.readlines())