1
Fork 0
mirror of https://github.com/jech/galene.git synced 2024-11-26 02:25:58 +01:00

Don't set group if joining failed.

We used to set sc.group even if joining failed, which would cause
us to spuriously call the onJoined callback when we disconnected.
This commit is contained in:
Juliusz Chroboczek 2023-04-03 22:57:36 +02:00
parent cba04e7de5
commit 59ff25310d

View file

@ -368,22 +368,26 @@ ServerConnection.prototype.connect = async function(url) {
sc.gotRemoteIce(m.id, m.candidate); sc.gotRemoteIce(m.id, m.candidate);
break; break;
case 'joined': case 'joined':
if(sc.group) { if(m.kind === 'leave' || m.kind === 'fail') {
if(m.group !== sc.group) {
throw new Error('Joined multiple groups');
}
} else {
sc.group = m.group;
}
sc.username = m.username;
sc.permissions = m.permissions || [];
sc.rtcConfiguration = m.rtcConfiguration || null;
if(m.kind == 'leave') {
for(let id in sc.users) { for(let id in sc.users) {
delete(sc.users[id]); delete(sc.users[id]);
if(sc.onuser) if(sc.onuser)
sc.onuser.call(sc, id, 'delete'); sc.onuser.call(sc, id, 'delete');
} }
sc.username = null;
sc.permissions = [];
sc.rtcConfiguration = null;
} else if(m.kind === 'join' || m.kind == 'change') {
if(m.kind === 'join' && sc.group) {
throw new Error('Joined multiple groups');
} else if(m.kind === 'change' && m.group != sc.group) {
console.warn('join(change) for inconsistent group');
break;
}
sc.group = m.group;
sc.username = m.username;
sc.permissions = m.permissions || [];
sc.rtcConfiguration = m.rtcConfiguration || null;
} }
if(sc.onjoined) if(sc.onjoined)
sc.onjoined.call(sc, m.kind, m.group, sc.onjoined.call(sc, m.kind, m.group,