mirror of
https://activitypub.software/TransFem-org/Sharkey.git
synced 2025-04-13 09:44:40 +00:00
make sure that note subscriptions can't stay above limit
This commit is contained in:
parent
b8fd9d0bc0
commit
045ff5d2c0
1 changed files with 3 additions and 5 deletions
|
@ -202,10 +202,11 @@ export default class Connection {
|
|||
if (!payload.id || typeof payload.id !== 'string') return;
|
||||
|
||||
const current = this.subscribingNotes.get(payload.id) ?? 0;
|
||||
const updated = current + 1;
|
||||
this.subscribingNotes.set(payload.id, updated);
|
||||
|
||||
// Limit the number of distinct notes that can be subscribed to.
|
||||
// If current is-zero, then this is a new note and we need to check the limit
|
||||
if (current === 0 && this.subscribingNotes.size >= MAX_SUBSCRIPTIONS_PER_CONNECTION) {
|
||||
while (this.subscribingNotes.size > MAX_SUBSCRIPTIONS_PER_CONNECTION) {
|
||||
// Map maintains insertion order, so first key is always the oldest
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const oldestKey = this.subscribingNotes.keys().next().value!;
|
||||
|
@ -214,9 +215,6 @@ export default class Connection {
|
|||
this.subscriber.off(`noteStream:${oldestKey}`, this.onNoteStreamMessage);
|
||||
}
|
||||
|
||||
const updated = current + 1;
|
||||
this.subscribingNotes.set(payload.id, updated);
|
||||
|
||||
if (updated === 1) {
|
||||
this.subscriber.on(`noteStream:${payload.id}`, this.onNoteStreamMessage);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue