X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_permchannels.cpp;h=d4d80843971910c921fca1fdbb9b76be837b6b52;hb=cb4c516ace8fef75b8a54a141c3644af9697ac0a;hp=5d8b0c6e7328cffdca75971347a2bcc80f17dc2a;hpb=f76df9169d933b2bf5005cc71a1e2c570a13042a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_permchannels.cpp b/src/modules/m_permchannels.cpp index 5d8b0c6e7..d4d808439 100644 --- a/src/modules/m_permchannels.cpp +++ b/src/modules/m_permchannels.cpp @@ -42,6 +42,7 @@ static bool WriteDatabase() return false; } + fputs("# Permchannels DB\n# This file is autogenerated; any changes will be overwritten!\n\n", f); // Now, let's write. for (chan_hash::const_iterator i = ServerInstance->chanlist->begin(); i != ServerInstance->chanlist->end(); i++) { @@ -126,30 +127,11 @@ class PermChannel : public ModeHandler { if (channel->IsModeSet('P')) { - if (channel->GetUserCounter() == 0 && !IS_SERVER(source)) + channel->SetMode(this,false); + if (channel->GetUserCounter() == 0) { - /* - * ugh, ugh, UGH! - * - * We can't delete this channel the way things work at the moment, - * because of the following scenario: - * s1:#c <-> s2:#c - * - * s1 has a user in #c, s2 does not. s2 has +P set. s2 has a losing TS. - * - * On netmerge, s2 loses, so s2 removes all modes (including +P) which - * would subsequently delete the channel here causing big fucking problems. - * - * I don't think there's really a way around this, so just deny -P on a 0 user chan. - * -- w00t - * - * delete channel; - */ - return MODEACTION_DENY; + channel->DelUser(ServerInstance->FakeClient); } - - /* for servers, remove +P (to avoid desyncs) but don't bother trying to delete. */ - channel->SetMode('P',false); return MODEACTION_ALLOW; } }