mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 12:05:15 +00:00
LibWeb: Do not break WebDriver errors into multiple socket writes
Very similar to commit e5877cda61
.
By sending as much data as we can in a single write, we see a massive
performance improvement on WPT tests that hammer WebDriver with errors.
On my Linux machine, this reduces the runtime of:
/webdriver/tests/classic/perform_actions/invalid.py
from 45-60s down to 3-4s.
This commit is contained in:
parent
e436c31b97
commit
7a15e3ee5c
Notes:
github-actions[bot]
2024-09-27 08:48:02 +00:00
Author: https://github.com/trflynn89 Commit: https://github.com/LadybirdBrowser/ladybird/commit/7a15e3ee5ca Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1546 Reviewed-by: https://github.com/tcl3 ✅
1 changed files with 9 additions and 10 deletions
|
@ -330,18 +330,17 @@ ErrorOr<void, Client::WrappedError> Client::send_error_response(Error const& err
|
|||
JsonObject result;
|
||||
result.set("value", move(error_response));
|
||||
|
||||
StringBuilder content_builder;
|
||||
result.serialize(content_builder);
|
||||
auto content = result.serialized<StringBuilder>();
|
||||
|
||||
StringBuilder header_builder;
|
||||
header_builder.appendff("HTTP/1.1 {} {}\r\n", error.http_status, reason);
|
||||
header_builder.append("Cache-Control: no-cache\r\n"sv);
|
||||
header_builder.append("Content-Type: application/json; charset=utf-8\r\n"sv);
|
||||
header_builder.appendff("Content-Length: {}\r\n", content_builder.length());
|
||||
header_builder.append("\r\n"sv);
|
||||
StringBuilder builder;
|
||||
builder.appendff("HTTP/1.1 {} {}\r\n", error.http_status, reason);
|
||||
builder.append("Cache-Control: no-cache\r\n"sv);
|
||||
builder.append("Content-Type: application/json; charset=utf-8\r\n"sv);
|
||||
builder.appendff("Content-Length: {}\r\n", content.length());
|
||||
builder.append("\r\n"sv);
|
||||
builder.append(content);
|
||||
|
||||
TRY(m_socket->write_until_depleted(TRY(header_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_until_depleted(TRY(content_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_until_depleted(builder.string_view()));
|
||||
|
||||
log_response(error.http_status);
|
||||
return {};
|
||||
|
|
Loading…
Add table
Reference in a new issue