resolved RESOLVED UNSUBMITTED PASS · 22 tool calls · 0 s · encode/httpx
Server connection handling. * Add `HTTPParser.keep_alive`. * Server... always read request to completion on keep alives. * `HTTPParser.complete` -> `.reset` * Close streams on server exit. * Don't raise `KeyboardException` on server exit.
| # | Tool | Arguments | Result |
|---|---|---|---|
| No trace captured. | |||
diff --git a/src/httpx/_parsers.py b/src/httpx/_parsers.py
index 830fccd..ae42b4e 100644
--- a/src/httpx/_parsers.py
+++ b/src/httpx/_parsers.py
@@ -109,6 +109,15 @@ class HTTPParser:
# Special states...
self.processing_1xx = False
+ @property
+ def keep_alive(self) -> bool:
+ return self.send_keep_alive and self.recv_keep_alive
+
+ @keep_alive.setter
+ def keep_alive(self, value: bool) -> None:
+ self.send_keep_alive = value
+ self.recv_keep_alive = value
+
def send_method_line(self, method: bytes, target: bytes, protocol: bytes) -> None:
"""
Send the initial request line:
@@ -375,7 +384,7 @@ class HTTPParser:
self.recv_state = State.DONE
return body
- def complete(self):
+ def reset(self):
is_fully_complete = self.send_state == State.DONE and self.recv_state == State.DONE
is_keepalive = self.send_keep_alive and self.recv_keep_alive
diff --git a/src/httpx/_server.py b/src/httpx/_server.py
index 95226d9..b46e4ac 100644
--- a/src/httpx/_server.py
+++ b/src/httpx/_server.py
@@ -89,7 +89,7 @@ class HTTPConnection:
# Start it all over again...
def _complete(self):
- self._parser.complete
+ self._parser.reset()
self._idle_expiry = time.monotonic() + self._keepalive_duration
........................ [100%] 24 passed in 0.06s