summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
authorLinus Groh <mail@linusgroh.de>2023-03-09 14:51:20 +0000
committerLinus Groh <mail@linusgroh.de>2023-03-09 14:51:20 +0000
commitd0ecd818889da9bee9096967e9e37fd813a6f9b1 (patch)
tree773fe00ab2d8a427dcae04c9b2ee4cd6ef0908ec /Userland
parentf068ddb79fad03c8afef3e5119509fc624dcadd7 (diff)
downloadserenity-d0ecd818889da9bee9096967e9e37fd813a6f9b1.zip
LibHTTP: Propagate OOM errors from HttpRequest::to_raw_request()
Diffstat (limited to 'Userland')
-rw-r--r--Userland/Libraries/LibHTTP/HttpRequest.cpp36
-rw-r--r--Userland/Libraries/LibHTTP/HttpRequest.h2
-rw-r--r--Userland/Libraries/LibHTTP/Job.cpp2
3 files changed, 20 insertions, 20 deletions
diff --git a/Userland/Libraries/LibHTTP/HttpRequest.cpp b/Userland/Libraries/LibHTTP/HttpRequest.cpp
index 9ac9255e9f..0a33e227ab 100644
--- a/Userland/Libraries/LibHTTP/HttpRequest.cpp
+++ b/Userland/Libraries/LibHTTP/HttpRequest.cpp
@@ -43,36 +43,36 @@ DeprecatedString HttpRequest::method_name() const
return to_deprecated_string(m_method);
}
-ByteBuffer HttpRequest::to_raw_request() const
+ErrorOr<ByteBuffer> HttpRequest::to_raw_request() const
{
StringBuilder builder;
- builder.append(method_name());
- builder.append(' ');
+ TRY(builder.try_append(method_name()));
+ TRY(builder.try_append(' '));
// NOTE: The percent_encode is so that e.g. spaces are properly encoded.
auto path = m_url.path();
VERIFY(!path.is_empty());
- builder.append(URL::percent_encode(m_url.path(), URL::PercentEncodeSet::EncodeURI));
+ TRY(builder.try_append(URL::percent_encode(m_url.path(), URL::PercentEncodeSet::EncodeURI)));
if (!m_url.query().is_empty()) {
- builder.append('?');
- builder.append(m_url.query());
+ TRY(builder.try_append('?'));
+ TRY(builder.try_append(m_url.query()));
}
- builder.append(" HTTP/1.1\r\nHost: "sv);
- builder.append(m_url.host());
+ TRY(builder.try_append(" HTTP/1.1\r\nHost: "sv));
+ TRY(builder.try_append(m_url.host()));
if (m_url.port().has_value())
- builder.appendff(":{}", *m_url.port());
- builder.append("\r\n"sv);
+ TRY(builder.try_appendff(":{}", *m_url.port()));
+ TRY(builder.try_append("\r\n"sv));
for (auto& header : m_headers) {
- builder.append(header.name);
- builder.append(": "sv);
- builder.append(header.value);
- builder.append("\r\n"sv);
+ TRY(builder.try_append(header.name));
+ TRY(builder.try_append(": "sv));
+ TRY(builder.try_append(header.value));
+ TRY(builder.try_append("\r\n"sv));
}
if (!m_body.is_empty() || method() == Method::POST) {
- builder.appendff("Content-Length: {}\r\n\r\n", m_body.size());
- builder.append((char const*)m_body.data(), m_body.size());
+ TRY(builder.try_appendff("Content-Length: {}\r\n\r\n", m_body.size()));
+ TRY(builder.try_append((char const*)m_body.data(), m_body.size()));
}
- builder.append("\r\n"sv);
- return builder.to_byte_buffer();
+ TRY(builder.try_append("\r\n"sv));
+ return builder.try_to_byte_buffer();
}
Optional<HttpRequest> HttpRequest::from_raw_request(ReadonlyBytes raw_request)
diff --git a/Userland/Libraries/LibHTTP/HttpRequest.h b/Userland/Libraries/LibHTTP/HttpRequest.h
index 7ab76f6c77..effa66b852 100644
--- a/Userland/Libraries/LibHTTP/HttpRequest.h
+++ b/Userland/Libraries/LibHTTP/HttpRequest.h
@@ -57,7 +57,7 @@ public:
void set_body(ByteBuffer&& body) { m_body = move(body); }
DeprecatedString method_name() const;
- ByteBuffer to_raw_request() const;
+ ErrorOr<ByteBuffer> to_raw_request() const;
void set_headers(HashMap<DeprecatedString, DeprecatedString> const&);
diff --git a/Userland/Libraries/LibHTTP/Job.cpp b/Userland/Libraries/LibHTTP/Job.cpp
index d5eeae2434..8bacd97d39 100644
--- a/Userland/Libraries/LibHTTP/Job.cpp
+++ b/Userland/Libraries/LibHTTP/Job.cpp
@@ -195,7 +195,7 @@ ErrorOr<ByteBuffer> Job::receive(size_t size)
void Job::on_socket_connected()
{
- auto raw_request = m_request.to_raw_request();
+ auto raw_request = m_request.to_raw_request().release_value_but_fixme_should_propagate_errors();
if constexpr (JOB_DEBUG) {
dbgln("Job: raw_request:");