Skip to content

Commit 9815e0f

Browse files
committed
Fixed race condition in work-around for broken feeds in ESR60.
1 parent 9a0a76e commit 9815e0f

1 file changed

Lines changed: 15 additions & 12 deletions

File tree

src/bg/RequestUtil.js

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,8 @@
1919
types: ["main_frame", "sub_frame", "object"]
2020
};
2121

22-
23-
browser.webRequest.onCompleted.addListener(r => {
24-
cleanup(r);
25-
let {tabId, url} = r;
26-
let key = tabKey(tabId, url);
27-
if (reloadingTabs.has(key)) {
28-
debug("Reloading tab", key);
29-
browser.tabs.update(tabId, {url});
30-
}
31-
}, filter);
32-
browser.webRequest.onErrorOccurred.addListener(cleanup, filter);
22+
for (let event of ["onCompleted", "onErrorOccurred"])
23+
browser.webRequest[event].addListener(cleanup, filter);
3324

3425
let executeAll = async (scripts, where) => {
3526
let {url, tabId, frameId} = where;
@@ -99,9 +90,12 @@
9990
let filter = browser.webRequest.filterResponseData(requestId);
10091
let buffer = [];
10192
let first = true;
93+
let done = false;
94+
let mustReload = false;
10295
let runAndFlush = async () => {
10396
let scriptsRan = await executeAll(scripts, request);
10497
if (mustCheckFeed && !scriptsRan) {
98+
mustReload = true;
10599
debug(`Marking as "must reload"`, tabId, url);
106100
reloadingTabs.add(tabKey(tabId, url));
107101
}
@@ -113,6 +107,9 @@
113107
filter.disconnect();
114108
buffer = null;
115109
}
110+
if (done) {
111+
filter.onstop(null);
112+
}
116113
};
117114

118115
if (brokenOnLoad) {
@@ -137,7 +134,13 @@
137134
filter.disconnect();
138135
};
139136

140-
137+
filter.onstop = event => {
138+
done = true;
139+
if (mustReload && !buffer) {
140+
mustReload = false;
141+
browser.tabs.update(tabId, {url});
142+
}
143+
}
141144
}
142145
}
143146
}

0 commit comments

Comments
 (0)