You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been thinking about possible solutions to #518, and have so far come up with two solutions.
The problem is that the first joined user to an empty IRC channel will be marked as an operator. If a Matrix user is (re)connected to a IRC channel without any real IRC users in it, then that Matrix user will be opped. For freenode at least, ChanServ will swoop in to correct this after some time by de-opping the user.
In Matrix, the damage can still be done -- temporal OPs of the wrong user can sometimes stick if the corrective OP doesn't apply to the room, and it's quite scary since Matrix doesn't have the same semantics.
The first solution is to ensure that a user is picked as a 'frontier' each time on reconnection, and that user should be someone who is already OPed in the room. This solution is problematic as it requires us to do a state request on the room in question, which is expensive during startup. We could also store the frontier user in the datastore, but could easily become de-synced from Matrix.
The second solution may be to just have a given period of time where a power-level is held until a timer has elapsed and it is applied to the room. The power level change may be invalidated by another mode change in the room, if the change conflicts. The upside to this is that it should hopefully fix this specific issue, and the downside is that PL changes will no longer be instant. We may only need to apply this grace period to channels where we have no knowledge of the membership.
The text was updated successfully, but these errors were encountered:
I've been thinking about possible solutions to #518, and have so far come up with two solutions.
The problem is that the first joined user to an empty IRC channel will be marked as an operator. If a Matrix user is (re)connected to a IRC channel without any real IRC users in it, then that Matrix user will be opped. For freenode at least, ChanServ will swoop in to correct this after some time by de-opping the user.
In Matrix, the damage can still be done -- temporal OPs of the wrong user can sometimes stick if the corrective OP doesn't apply to the room, and it's quite scary since Matrix doesn't have the same semantics.
The first solution is to ensure that a user is picked as a 'frontier' each time on reconnection, and that user should be someone who is already OPed in the room. This solution is problematic as it requires us to do a state request on the room in question, which is expensive during startup. We could also store the frontier user in the datastore, but could easily become de-synced from Matrix.
The second solution may be to just have a given period of time where a power-level is held until a timer has elapsed and it is applied to the room. The power level change may be invalidated by another mode change in the room, if the change conflicts. The upside to this is that it should hopefully fix this specific issue, and the downside is that PL changes will no longer be instant. We may only need to apply this grace period to channels where we have no knowledge of the membership.
The text was updated successfully, but these errors were encountered: