]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Tighten up how we hand out stream ids
authorTom Christie <tom@tomchristie.com>
Wed, 24 Apr 2019 16:12:05 +0000 (17:12 +0100)
committerTom Christie <tom@tomchristie.com>
Wed, 24 Apr 2019 16:12:05 +0000 (17:12 +0100)
httpcore/http2.py

index 0b32bc159204cd0aae8b0b9f682902eb9dc0d40c..08904388da19f37012fe4f54f040fb5864c0ab52 100644 (file)
@@ -45,9 +45,8 @@ class HTTP2Connection(Client):
             self.initiate_connection()
 
         #  Start sending the request.
-        stream_id = self.h2_state.get_next_available_stream_id()
+        stream_id = await self.send_headers(stream_id, request)
         self.events[stream_id] = []
-        await self.send_headers(stream_id, request)
 
         # Send the request body.
         async for data in request.stream():
@@ -85,7 +84,8 @@ class HTTP2Connection(Client):
         self.writer.write(data_to_send)
         self.initialized = True
 
-    async def send_headers(self, stream_id: int, request: Request) -> None:
+    async def send_headers(self, stream_id: int, request: Request) -> int:
+        stream_id = self.h2_state.get_next_available_stream_id()
         headers = [
             (b":method", request.method.encode()),
             (b":authority", request.url.hostname.encode()),
@@ -95,6 +95,7 @@ class HTTP2Connection(Client):
         self.h2_state.send_headers(stream_id, headers)
         data_to_send = self.h2_state.data_to_send()
         self.writer.write(data_to_send)
+        return stream_id
 
     async def send_data(self, stream_id: int, data: bytes) -> None:
         self.h2_state.send_data(stream_id, data)