mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-10 10:01:13 +09:00
![]() We currently store Web::Fetch::Infrastructure::Response objects in the HTTP cache. They are associated with their original realm, but when we use a cached response, we clone it into the target realm. For example, two <iframe> objects loading the same HTML will be in different realms. When we clone the response, we must use the target realm throughout the entire cloning process. We neglected to do this for the cloned response body stream, which is cloned via teeing. The result was the the stream for the "cloned" response was created in the original realm, causing issues down the line when reading from that stream tried to handle read promises on behalf of the original realm. There are protections in place to prevent this from happening, and the cached response read would never complete. |
||
---|---|---|
.. | ||
Fetching | ||
Infrastructure | ||
Body.cpp | ||
Body.h | ||
Body.idl | ||
BodyInit.cpp | ||
BodyInit.h | ||
BodyInit.idl | ||
Enums.cpp | ||
Enums.h | ||
FetchMethod.cpp | ||
FetchMethod.h | ||
Headers.cpp | ||
Headers.h | ||
Headers.idl | ||
HeadersIterator.cpp | ||
HeadersIterator.h | ||
Request.cpp | ||
Request.h | ||
Request.idl | ||
Response.cpp | ||
Response.h | ||
Response.idl |