Skip to content

Commit

Permalink
fix(backend): happy-domを使用後にcloseするように (#14615)
Browse files Browse the repository at this point in the history
* Add `DetachedWindowAPI.close` calls to `MfmService`

(cherry picked from commit ceaec33)

* fix

* update changelog

* fix

---------

Co-authored-by: Julia Johannesen <[email protected]>
  • Loading branch information
kakkokari-gtyih and K4rakara authored Sep 23, 2024
1 parent 7f7445a commit e673c14
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/commit/26e0412fbb91447c37e8fb06ffb0487346063bb8)
- Fix: `Retry-After`ヘッダーが送信されなかった問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/commit/8a982c61c01909e7540ff1be9f019df07c3f0624)
- Fix: サーバーサイドのDOM解析完了時にリソースを開放するように
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/634)

## 2024.8.0

Expand Down
8 changes: 6 additions & 2 deletions packages/backend/src/core/MfmService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ export class MfmService {
return null;
}

const { window } = new Window();
const { happyDOM, window } = new Window();

const doc = window.document;

Expand Down Expand Up @@ -457,6 +457,10 @@ export class MfmService {

appendChildren(nodes, body);

return new XMLSerializer().serializeToString(body);
const serialized = new XMLSerializer().serializeToString(body);

happyDOM.close().catch(err => {});

return serialized;
}
}
4 changes: 2 additions & 2 deletions packages/backend/src/core/activitypub/ApRequestService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ export class ApRequestService {

if ((contentType ?? '').split(';')[0].trimEnd().toLowerCase() === 'text/html' && _followAlternate === true) {
const html = await res.text();
const window = new Window({
const { window, happyDOM } = new Window({
settings: {
disableJavaScriptEvaluation: true,
disableJavaScriptFileLoading: true,
Expand Down Expand Up @@ -241,7 +241,7 @@ export class ApRequestService {
} catch (e) {
// something went wrong parsing the HTML, ignore the whole thing
} finally {
window.close();
happyDOM.close().catch(err => {});
}
}
//#endregion
Expand Down

0 comments on commit e673c14

Please sign in to comment.