mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-09-01 12:02:40 +02:00
Emscripten: Fix dead requests having their status updated
This commit is contained in:
@@ -54,7 +54,7 @@ namespace http
|
|||||||
EM_ASM({
|
EM_ASM({
|
||||||
Module.emscriptenRequestManager = {};
|
Module.emscriptenRequestManager = {};
|
||||||
Module.emscriptenRequestManager.requests = [];
|
Module.emscriptenRequestManager.requests = [];
|
||||||
Module.emscriptenRequestManager.updateRequestStatus = Module.cwrap(
|
Module.emscriptenRequestManager.updateRequestStatusThunk = Module.cwrap(
|
||||||
'RequestManager_UpdateRequestStatusThunk',
|
'RequestManager_UpdateRequestStatusThunk',
|
||||||
null,
|
null,
|
||||||
[ 'number' ]
|
[ 'number' ]
|
||||||
@@ -241,7 +241,12 @@ namespace http
|
|||||||
request.status = 0;
|
request.status = 0;
|
||||||
request.bytesTotal = -1;
|
request.bytesTotal = -1;
|
||||||
request.bytesDone = 0;
|
request.bytesDone = 0;
|
||||||
Module.emscriptenRequestManager.updateRequestStatus(token);
|
request.alive = true;
|
||||||
|
let updateRequestStatus = () => {
|
||||||
|
if (request.alive) {
|
||||||
|
Module.emscriptenRequestManager.updateRequestStatusThunk(token);
|
||||||
|
}
|
||||||
|
};
|
||||||
request.fetchController = new AbortController();
|
request.fetchController = new AbortController();
|
||||||
fetch(request.fetchResource, {
|
fetch(request.fetchResource, {
|
||||||
method: request.fetchMethod,
|
method: request.fetchMethod,
|
||||||
@@ -264,7 +269,7 @@ namespace http
|
|||||||
return controller.close();
|
return controller.close();
|
||||||
}
|
}
|
||||||
request.bytesDone += value.byteLength;
|
request.bytesDone += value.byteLength;
|
||||||
Module.emscriptenRequestManager.updateRequestStatus(token);
|
updateRequestStatus();
|
||||||
controller.enqueue(value);
|
controller.enqueue(value);
|
||||||
read();
|
read();
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
@@ -289,13 +294,13 @@ namespace http
|
|||||||
}).then(data => {
|
}).then(data => {
|
||||||
request.status = request.statusEarly;
|
request.status = request.statusEarly;
|
||||||
request.responseData = data;
|
request.responseData = data;
|
||||||
Module.emscriptenRequestManager.updateRequestStatus(token);
|
updateRequestStatus();
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
if (!request.status) {
|
if (!request.status) {
|
||||||
request.status = 600;
|
request.status = 600;
|
||||||
}
|
}
|
||||||
Module.emscriptenRequestManager.updateRequestStatus(token);
|
updateRequestStatus();
|
||||||
});
|
});
|
||||||
}, handle->id, handle);
|
}, handle->id, handle);
|
||||||
}
|
}
|
||||||
@@ -363,6 +368,7 @@ namespace http
|
|||||||
assert(handle->id >= 0);
|
assert(handle->id >= 0);
|
||||||
EM_ASM({
|
EM_ASM({
|
||||||
let request = Module.emscriptenRequestManager.requests[$0];
|
let request = Module.emscriptenRequestManager.requests[$0];
|
||||||
|
request.alive = false;
|
||||||
request.fetchController.abort();
|
request.fetchController.abort();
|
||||||
Module.emscriptenRequestManager.requests[$0] = null;
|
Module.emscriptenRequestManager.requests[$0] = null;
|
||||||
}, handle->id);
|
}, handle->id);
|
||||||
|
Reference in New Issue
Block a user