@@ -57,7 +57,7 @@ export interface IMembershipManager {
57
57
* - send that sate event
58
58
* - send the delayed leave event
59
59
* - update the delayed leave event while connected
60
- * - update the state event when it times out (for calls longer than membershipExpiryTimeout ~ 4h)
60
+ * - update the state event when it times out (for calls longer than membershipEventExpiry ~ 4h)
61
61
*
62
62
* It is possible to test this class on its own. The api surface (to use for tests) is
63
63
* defined in `MembershipManagerInterface`.
@@ -83,30 +83,26 @@ export class LegacyMembershipManager implements IMembershipManager {
83
83
private updateCallMembershipRunning = false ;
84
84
private needCallMembershipUpdate = false ;
85
85
/**
86
- * If the server disallows the configured {@link membershipServerSideExpiryTimeout },
86
+ * If the server disallows the configured {@link delayedLeaveEventDelay },
87
87
* this stores a delay that the server does allow.
88
88
*/
89
- private membershipServerSideExpiryTimeoutOverride ?: number ;
89
+ private delayedLeaveEventDelayOverride ?: number ;
90
90
private disconnectDelayId : string | undefined ;
91
91
92
- private get callMemberEventRetryDelayMinimum ( ) : number {
93
- return this . joinConfig ?. callMemberEventRetryDelayMinimum ?? 3_000 ;
92
+ private get membershipEventLocalRateLimit ( ) : number {
93
+ return this . joinConfig ?. membershipEventLocalRateLimit ?? 3_000 ;
94
94
}
95
- private get membershipExpiryTimeout ( ) : number {
96
- return this . joinConfig ?. membershipExpiryTimeout ?? DEFAULT_EXPIRE_DURATION ;
95
+ private get membershipEventExpiry ( ) : number {
96
+ return this . joinConfig ?. membershipEventExpiry ?? DEFAULT_EXPIRE_DURATION ;
97
97
}
98
- private get membershipServerSideExpiryTimeout ( ) : number {
99
- return (
100
- this . membershipServerSideExpiryTimeoutOverride ??
101
- this . joinConfig ?. membershipServerSideExpiryTimeout ??
102
- 8_000
103
- ) ;
98
+ private get delayedLeaveEventDelay ( ) : number {
99
+ return this . delayedLeaveEventDelayOverride ?? this . joinConfig ?. delayedLeaveEventDelay ?? 8_000 ;
104
100
}
105
- private get membershipKeepAlivePeriod ( ) : number {
106
- return this . joinConfig ?. membershipKeepAlivePeriod ?? 5_000 ;
101
+ private get delayedLeaveEventRestartPeriod ( ) : number {
102
+ return this . joinConfig ?. delayedLeaveEventRestartPeriod ?? 5_000 ;
107
103
}
108
- private get callMemberEventRetryJitter ( ) : number {
109
- return this . joinConfig ?. callMemberEventRetryJitter ?? 2_000 ;
104
+ private get membershipEventJitter ( ) : number {
105
+ return this . joinConfig ?. membershipEventJitter ?? 2_000 ;
110
106
}
111
107
112
108
public constructor (
@@ -131,7 +127,7 @@ export class LegacyMembershipManager implements IMembershipManager {
131
127
public join ( fociPreferred : Focus [ ] , fociActive ?: Focus ) : void {
132
128
this . ownFocusActive = fociActive ;
133
129
this . ownFociPreferred = fociPreferred ;
134
- this . relativeExpiry = this . membershipExpiryTimeout ;
130
+ this . relativeExpiry = this . membershipEventExpiry ;
135
131
// We don't wait for this, mostly because it may fail and schedule a retry, so this
136
132
// function returning doesn't really mean anything at all.
137
133
this . triggerCallMembershipEventUpdate ( ) ;
@@ -255,7 +251,7 @@ export class LegacyMembershipManager implements IMembershipManager {
255
251
this . client . _unstable_sendDelayedStateEvent (
256
252
this . room . roomId ,
257
253
{
258
- delay : this . membershipServerSideExpiryTimeout ,
254
+ delay : this . delayedLeaveEventDelay ,
259
255
} ,
260
256
EventType . GroupCallMemberPrefix ,
261
257
{ } , // leave event
@@ -270,11 +266,8 @@ export class LegacyMembershipManager implements IMembershipManager {
270
266
e . data [ "org.matrix.msc4140.errcode" ] === "M_MAX_DELAY_EXCEEDED"
271
267
) {
272
268
const maxDelayAllowed = e . data [ "org.matrix.msc4140.max_delay" ] ;
273
- if (
274
- typeof maxDelayAllowed === "number" &&
275
- this . membershipServerSideExpiryTimeout > maxDelayAllowed
276
- ) {
277
- this . membershipServerSideExpiryTimeoutOverride = maxDelayAllowed ;
269
+ if ( typeof maxDelayAllowed === "number" && this . delayedLeaveEventDelay > maxDelayAllowed ) {
270
+ this . delayedLeaveEventDelayOverride = maxDelayAllowed ;
278
271
return prepareDelayedDisconnection ( ) ;
279
272
}
280
273
}
@@ -343,15 +336,15 @@ export class LegacyMembershipManager implements IMembershipManager {
343
336
}
344
337
logger . info ( "Sent updated call member event." ) ;
345
338
} catch ( e ) {
346
- const resendDelay = this . callMemberEventRetryDelayMinimum + Math . random ( ) * this . callMemberEventRetryJitter ;
339
+ const resendDelay = this . membershipEventLocalRateLimit + Math . random ( ) * this . membershipEventJitter ;
347
340
logger . warn ( `Failed to send call member event (retrying in ${ resendDelay } ): ${ e } ` ) ;
348
341
await sleep ( resendDelay ) ;
349
342
await this . triggerCallMembershipEventUpdate ( ) ;
350
343
}
351
344
}
352
345
353
346
private scheduleDelayDisconnection ( ) : void {
354
- this . memberEventTimeout = setTimeout ( this . delayDisconnection , this . membershipKeepAlivePeriod ) ;
347
+ this . memberEventTimeout = setTimeout ( this . delayDisconnection , this . delayedLeaveEventRestartPeriod ) ;
355
348
}
356
349
357
350
private readonly delayDisconnection = async ( ) : Promise < void > => {
0 commit comments