MCPcopy Create free account
hub / github.com/mitmproxy/mitmproxy / mark_done

Method mark_done

mitmproxy/proxy/layers/http/_http1.py:171–220  ·  view source on GitHub ↗
(
        self, *, request: bool = False, response: bool = False
    )

Source from the content-addressed store, hash-verified

169 yield ReceiveHttp(ResponseEndOfMessage(self.stream_id))
170
171 def mark_done(
172 self, *, request: bool = False, response: bool = False
173 ) -> layer.CommandGenerator[None]:
174 if request:
175 self.request_done = True
176 if response:
177 self.response_done = True
178 if self.request_done and self.response_done:
179 assert self.request
180 assert self.response
181 if should_make_pipe(self.request, self.response):
182 yield from self.make_pipe()
183 return
184 try:
185 read_until_eof_semantics = (
186 http1.expected_http_body_size(self.request, self.response) == -1
187 )
188 except ValueError:
189 # this may raise only now (and not earlier) because an addon set invalid headers,
190 # in which case it's not really clear what we are supposed to do.
191 read_until_eof_semantics = False
192 connection_done = (
193 read_until_eof_semantics
194 or http1.connection_close(
195 self.request.http_version, self.request.headers
196 )
197 or http1.connection_close(
198 self.response.http_version, self.response.headers
199 )
200 # If we proxy HTTP/2 to HTTP/1, we only use upstream connections for one request.
201 # This simplifies our connection management quite a bit as we can rely on
202 # the proxyserver's max-connection-per-server throttling.
203 or (
204 (self.request.is_http2 or self.request.is_http3)
205 and isinstance(self, Http1Client)
206 )
207 )
208 if connection_done:
209 yield commands.CloseConnection(self.conn)
210 self.state = self.done
211 return
212 self.request_done = self.response_done = False
213 self.request = self.response = None
214 if isinstance(self, Http1Server):
215 self.stream_id += 2
216 else:
217 self.stream_id = None
218 self.state = self.read_headers
219 if self.buf:
220 yield from self.state(events.DataReceived(self.conn, b""))
221
222
223class Http1Server(Http1Connection):

Callers 1

read_bodyMethod · 0.95

Calls 3

make_pipeMethod · 0.95
should_make_pipeFunction · 0.85
stateMethod · 0.45

Tested by

no test coverage detected