summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/channels.c4
-rw-r--r--src/ircd.c11
-rw-r--r--src/protocol/bahamut.c1
-rw-r--r--src/protocol/charybdis.c1
-rw-r--r--src/protocol/dreamforge.c1
-rw-r--r--src/protocol/hybrid.c1
-rw-r--r--src/protocol/inspircd11.c1
-rw-r--r--src/protocol/inspircd12.c1
-rw-r--r--src/protocol/plexus2.c1
-rw-r--r--src/protocol/plexus3.c1
-rw-r--r--src/protocol/ptlink.c1
-rw-r--r--src/protocol/rageircd.c1
-rw-r--r--src/protocol/ratbox.c1
-rw-r--r--src/protocol/shadowircd.c1
-rw-r--r--src/protocol/solidircd.c1
-rw-r--r--src/protocol/ultimate2.c1
-rw-r--r--src/protocol/ultimate3.c1
-rw-r--r--src/protocol/unreal31.c1
-rw-r--r--src/protocol/unreal32.c1
-rw-r--r--src/protocol/viagra.c1
20 files changed, 33 insertions, 0 deletions
diff --git a/src/channels.c b/src/channels.c
index c7b96a860..aa7ed4712 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -52,6 +52,10 @@ void chan_deluser(User * user, Channel * c)
anope_cmd_part(c->ci->bi->nick, c->name, NULL);
}
+ /* Channel is permament and shouldn't be deleted */
+ if (anope_get_permchan_mode() && c->mode & anope_get_permchan_mode())
+ return;
+
if (!c->users)
chan_delete(c);
}
diff --git a/src/ircd.c b/src/ircd.c
index 987333a24..8d7bb04b9 100644
--- a/src/ircd.c
+++ b/src/ircd.c
@@ -1203,6 +1203,11 @@ void pmodule_limit_mode(int mode)
ircd_modes.chan_limit = mode;
}
+void pmodule_permchan_mode(int mode)
+{
+ ircd_modes.chan_perm = mode;
+}
+
int anope_get_invis_mode()
{
return ircd_modes.user_invis;
@@ -1237,3 +1242,9 @@ int anope_get_limit_mode()
{
return ircd_modes.chan_limit;
}
+
+int anope_get_permchan_mode()
+{
+ return ircd_modes.chan_perm;
+}
+
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index 65dc176d3..5afcb0cbe 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -1678,6 +1678,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c
index fb51fdcfb..7a3898f54 100644
--- a/src/protocol/charybdis.c
+++ b/src/protocol/charybdis.c
@@ -1989,6 +1989,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/dreamforge.c b/src/protocol/dreamforge.c
index c8095d0f0..178287adc 100644
--- a/src/protocol/dreamforge.c
+++ b/src/protocol/dreamforge.c
@@ -1385,6 +1385,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/hybrid.c b/src/protocol/hybrid.c
index ef183a63e..be3ab6841 100644
--- a/src/protocol/hybrid.c
+++ b/src/protocol/hybrid.c
@@ -1574,6 +1574,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index 830685992..0cd011304 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -1958,6 +1958,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/inspircd12.c b/src/protocol/inspircd12.c
index 12244f5cd..a815a3455 100644
--- a/src/protocol/inspircd12.c
+++ b/src/protocol/inspircd12.c
@@ -2672,6 +2672,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(CMODE_P);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/plexus2.c b/src/protocol/plexus2.c
index 3c15e1c9b..bc1611911 100644
--- a/src/protocol/plexus2.c
+++ b/src/protocol/plexus2.c
@@ -1880,6 +1880,7 @@ AnopeInit (int argc, char **argv)
pmodule_private_cmode (CMODE_p);
pmodule_key_mode (CMODE_k);
pmodule_limit_mode (CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds ();
moduleAddIRCDMsgs ();
diff --git a/src/protocol/plexus3.c b/src/protocol/plexus3.c
index 073784521..c42af5f5e 100644
--- a/src/protocol/plexus3.c
+++ b/src/protocol/plexus3.c
@@ -1857,6 +1857,7 @@ AnopeInit (int argc, char **argv)
pmodule_private_cmode (CMODE_p);
pmodule_key_mode (CMODE_k);
pmodule_limit_mode (CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds ();
moduleAddIRCDMsgs ();
diff --git a/src/protocol/ptlink.c b/src/protocol/ptlink.c
index 28623aed1..4e23cdd74 100644
--- a/src/protocol/ptlink.c
+++ b/src/protocol/ptlink.c
@@ -1798,6 +1798,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/rageircd.c b/src/protocol/rageircd.c
index 513e7dd81..ac7b25625 100644
--- a/src/protocol/rageircd.c
+++ b/src/protocol/rageircd.c
@@ -1678,6 +1678,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index 17e6f3516..d5dc33fc0 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -1883,6 +1883,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/shadowircd.c b/src/protocol/shadowircd.c
index 161a0aaaa..e9a3da012 100644
--- a/src/protocol/shadowircd.c
+++ b/src/protocol/shadowircd.c
@@ -1834,6 +1834,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/solidircd.c b/src/protocol/solidircd.c
index a138454b7..578c33b49 100644
--- a/src/protocol/solidircd.c
+++ b/src/protocol/solidircd.c
@@ -1706,6 +1706,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/ultimate2.c b/src/protocol/ultimate2.c
index 47072761e..9b409b37e 100644
--- a/src/protocol/ultimate2.c
+++ b/src/protocol/ultimate2.c
@@ -1735,6 +1735,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/ultimate3.c b/src/protocol/ultimate3.c
index 9eb625bc7..4c308d49b 100644
--- a/src/protocol/ultimate3.c
+++ b/src/protocol/ultimate3.c
@@ -1819,6 +1819,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/unreal31.c b/src/protocol/unreal31.c
index 36b572158..b48db601e 100644
--- a/src/protocol/unreal31.c
+++ b/src/protocol/unreal31.c
@@ -1600,6 +1600,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 44b3df282..083e64615 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -2256,6 +2256,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/viagra.c b/src/protocol/viagra.c
index 76783ee7d..9a10ae908 100644
--- a/src/protocol/viagra.c
+++ b/src/protocol/viagra.c
@@ -1717,6 +1717,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();