Skip to content

Commit

Permalink
LibWeb/Fetch: Handle streams on abort
Browse files Browse the repository at this point in the history
When aborting fetch, the request stream now gets closed and the
response stream errors.
  • Loading branch information
skyz1 authored and gmta committed Dec 16, 2024
1 parent b263cd1 commit e18fb7f
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions Libraries/LibWeb/Fetch/FetchMethod.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <LibWeb/Fetch/Request.h>
#include <LibWeb/Fetch/Response.h>
#include <LibWeb/HTML/Scripting/TemporaryExecutionContext.h>
#include <LibWeb/Streams/AbstractOperations.h>
#include <LibWeb/WebIDL/ExceptionOr.h>
#include <LibWeb/WebIDL/Promise.h>

Expand Down Expand Up @@ -163,8 +164,8 @@ void abort_fetch(JS::Realm& realm, WebIDL::Promise const& promise, GC::Ref<Infra

// 2. If request’s body is non-null and is readable, then cancel request’s body with error.
if (auto* body = request->body().get_pointer<GC::Ref<Infrastructure::Body>>(); body != nullptr && (*body)->stream()->is_readable()) {
// TODO: Implement cancelling streams
(void)error;
// NOTE: Cancel here is different than the cancel method of stream and refers to https://streams.spec.whatwg.org/#readablestream-cancel
Streams::readable_stream_cancel((*body)->stream(), error);
}

// 3. If responseObject is null, then return.
Expand All @@ -178,8 +179,7 @@ void abort_fetch(JS::Realm& realm, WebIDL::Promise const& promise, GC::Ref<Infra
if (response->body()) {
auto stream = response->body()->stream();
if (stream->is_readable()) {
// TODO: Implement erroring streams
(void)error;
stream->error(error);
}
}
}
Expand Down

0 comments on commit e18fb7f

Please sign in to comment.