← pod_r4_v1

httpx_3672

resolved RESOLVED UNSUBMITTED PASS · 22 tool calls · 0 s · encode/httpx

Task input

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 calls (0)

#ToolArgumentsResult
No trace captured.

Patch

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
 
 

Test output

show
........................                                                 [100%]
24 passed in 0.06s