mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-06-11 09:35:59 -04:00
Merge pull request #2137 from lightpanda-io/http_abrupt_close
Handle http response with closed socket
This commit is contained in:
@@ -918,17 +918,15 @@ fn processOneMessage(self: *Client, msg: http.Handles.MultiMessage, transfer: *T
|
||||
// Transfer is done (success or error). Caller (processMessages) owns deinit.
|
||||
// Return true = done (caller will deinit), false = continues (redirect/auth).
|
||||
|
||||
// When the server sends "Connection: close" and closes the TLS
|
||||
// connection without a close_notify alert, BoringSSL reports
|
||||
// RecvError. If we already received valid HTTP headers, this is
|
||||
// a normal end-of-body (the connection closure signals the end
|
||||
// When the server closes the TLS onnection without a close_notify alert,
|
||||
// BoringSSL reports RecvError. If we already received valid HTTP headers,
|
||||
// this is a normal end-of-body (the connection closure signals the end
|
||||
// of the response per HTTP/1.1 when there is no Content-Length).
|
||||
// We must check this before endTransfer, which may reset the
|
||||
// easy handle.
|
||||
// We must check this before endTransfer, which may reset the easy handle.
|
||||
const is_conn_close_recv = blk: {
|
||||
const err = msg.err orelse break :blk false;
|
||||
if (err != error.RecvError) break :blk false;
|
||||
const hdr = msg.conn.getResponseHeader("connection", 0) orelse break :blk false;
|
||||
const hdr = msg.conn.getResponseHeader("connection", 0) orelse break :blk true;
|
||||
break :blk std.ascii.eqlIgnoreCase(hdr.value, "close");
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user