Allow kick_on_split_riding to protect channels with mlocked keys.
Do kick_on_split_riding if services sends an SJOIN with a lower TS and a different key. This relies on services restoring TS (changets option in atheme) and services not immediately parting after receiving the KICK, which is the case in recent atheme. For invite-only channels, still only do kick_on_split_riding in netbursts. Services is assumed to handle this itself (atheme does).
This commit is contained in:
parent
9494478ea0
commit
3cc95ad818
|
@ -394,12 +394,15 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
{
|
{
|
||||||
/* If configured, kick people trying to join +i/+k
|
/* If configured, kick people trying to join +i/+k
|
||||||
* channels by recreating them on split servers.
|
* channels by recreating them on split servers.
|
||||||
* Don't kick if the source has sent EOB (services
|
* If the source has sent EOB, assume this is some
|
||||||
* deopping everyone by TS-1 SJOIN).
|
* sort of hack by services. If cmode +i is set,
|
||||||
|
* services can send kicks if needed; if the key
|
||||||
|
* differs, services cannot kick in a race-free
|
||||||
|
* manner so do so here.
|
||||||
* -- jilles */
|
* -- jilles */
|
||||||
if (ConfigChannel.kick_on_split_riding &&
|
if (ConfigChannel.kick_on_split_riding &&
|
||||||
!HasSentEob(source_p) &&
|
((!HasSentEob(source_p) &&
|
||||||
((mode.mode & MODE_INVITEONLY) ||
|
mode.mode & MODE_INVITEONLY) ||
|
||||||
(mode.key[0] != 0 && irccmp(mode.key, oldmode->key) != 0)))
|
(mode.key[0] != 0 && irccmp(mode.key, oldmode->key) != 0)))
|
||||||
{
|
{
|
||||||
struct membership *msptr;
|
struct membership *msptr;
|
||||||
|
|
Loading…
Reference in New Issue