summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjantje_85 <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864>2009-10-06 13:08:37 +0000
committerjantje_85 <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864>2009-10-06 13:08:37 +0000
commit727bcf1fde40813f9bd148064ac377b972a6cdce (patch)
tree0341d4410a5740c0982441c0255d9f8e27f2be7b
parent699bee06c3a6e69e44f0e5b91d8e2054685c8213 (diff)
Added option for delayed pseudo-client introduction. (Required for Insp 1.2)
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@2535 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--docs/IRCD4
-rw-r--r--include/extern.h3
-rw-r--r--include/services.h10
-rw-r--r--src/init.c24
-rw-r--r--src/ircd.c11
-rw-r--r--src/protocol/bahamut.c12
-rw-r--r--src/protocol/bahamut.h1
-rw-r--r--src/protocol/charybdis.c7
-rw-r--r--src/protocol/charybdis.h1
-rw-r--r--src/protocol/dreamforge.c7
-rw-r--r--src/protocol/dreamforge.h1
-rw-r--r--src/protocol/hybrid.c7
-rw-r--r--src/protocol/hybrid.h1
-rw-r--r--src/protocol/inspircd11.c7
-rwxr-xr-xsrc/protocol/inspircd11.h1
-rw-r--r--src/protocol/plexus2.c8
-rw-r--r--src/protocol/plexus2.h1
-rw-r--r--src/protocol/plexus3.c8
-rw-r--r--src/protocol/plexus3.h1
-rw-r--r--src/protocol/ptlink.c6
-rw-r--r--src/protocol/ptlink.h1
-rw-r--r--src/protocol/rageircd.c9
-rw-r--r--src/protocol/rageircd.h1
-rw-r--r--src/protocol/ratbox.c9
-rw-r--r--src/protocol/ratbox.h1
-rw-r--r--src/protocol/shadowircd.c7
-rw-r--r--src/protocol/shadowircd.h1
-rw-r--r--src/protocol/solidircd.c6
-rw-r--r--src/protocol/solidircd.h1
-rw-r--r--src/protocol/ultimate2.c7
-rw-r--r--src/protocol/ultimate2.h1
-rw-r--r--src/protocol/ultimate3.c7
-rw-r--r--src/protocol/ultimate3.h1
-rw-r--r--src/protocol/unreal31.c7
-rw-r--r--src/protocol/unreal31.h1
-rw-r--r--src/protocol/unreal32.c7
-rw-r--r--src/protocol/unreal32.h1
-rw-r--r--src/protocol/viagra.c7
-rw-r--r--src/protocol/viagra.h1
-rw-r--r--version.log5
40 files changed, 182 insertions, 20 deletions
diff --git a/docs/IRCD b/docs/IRCD
index 728fe1c13..ef2690ab8 100644
--- a/docs/IRCD
+++ b/docs/IRCD
@@ -451,6 +451,10 @@ How To Add IRCd Support
89) CMode j: CMODE_ that defines throttle mode. Use 0 for no support.
+ 90) Delayed client introduction: Delay the introduction of services pseudo-
+ client till after we have received the uplinks
+ CAPAB.
+
So we've had this long list. Now there's a second struct to fill. This
struct isn't as long as the previous one though, so we'll handle it quite
quick compared to the previous one.
diff --git a/include/extern.h b/include/extern.h
index 8e6c61ed7..050228e6f 100644
--- a/include/extern.h
+++ b/include/extern.h
@@ -611,6 +611,7 @@ E void set_lastmask(User * u);
E void introduce_user(const char *user);
E int init_primary(int ac, char **av);
E int init_secondary(int ac, char **av);
+E void init_tertiary();
E int servernum;
/**** ircd.c ****/
@@ -667,6 +668,7 @@ E void pmodule_cmd_chg_nick(void (*func) (char *oldnick, char *newnick));
E void pmodule_cmd_svsnick(void (*func) (char *source, char *guest, time_t when));
E void pmodule_cmd_vhost_on(void (*func) (char *nick, char *vIdent, char *vhost));
E void pmodule_cmd_connect(void (*func) (int servernum));
+E void pmodule_cmd_bob(void (*func) ());
E void pmodule_cmd_svshold(void (*func) (char *nick));
E void pmodule_cmd_release_svshold(void (*func) (char *nick));
E void pmodule_cmd_unsgline(void (*func) (char *mask));
@@ -1245,6 +1247,7 @@ E void anope_cmd_chgident(char *nick, char *vIdent); /* CHG
E void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost); /* CHGHOST + CHGIDENT */
E void anope_cmd_vhost_off(User *u);
E void anope_cmd_connect(int servernum); /* Connect */
+E void anope_cmd_bob();
E void anope_cmd_ea(); /* EA */
E void anope_cmd_global(char *source, const char *fmt, ...); /* GLOBOPS */
E void anope_cmd_invite(char *source, char *chan, char *nick); /* INVITE */
diff --git a/include/services.h b/include/services.h
index 48e38d53c..81754e8be 100644
--- a/include/services.h
+++ b/include/services.h
@@ -363,10 +363,11 @@ struct ircdvars_ {
char *nickchars; /* character set */
int sync; /* reports sync state */
int cidrchanbei; /* channel bans/excepts/invites support CIDR (syntax: +b *!*@192.168.0.0/15)
- * 0 for no support, 1 for strict cidr support, anything else
- * for ircd specific support (nefarious only cares about first /mask) */
- int jmode; /* +j join throttle */
- uint32 chan_jmode; /* Mode */
+ * 0 for no support, 1 for strict cidr support, anything else
+ * for ircd specific support (nefarious only cares about first /mask) */
+ int jmode; /* +j join throttle */
+ uint32 chan_jmode; /* Mode */
+ int delay_cl_intro; /*Delay client introduction till after receiving CAPAB. */
};
struct ircdcapab_ {
@@ -1195,6 +1196,7 @@ typedef struct ircd_proto_ {
void (*ircd_cmd_svsnick)(char *source, char *guest, time_t when);
void (*ircd_cmd_vhost_on)(char *nick, char *vIdent, char *vhost);
void (*ircd_cmd_connect)(int servernum);
+ void (*ircd_cmd_bob)();
void (*ircd_cmd_svshold)(char *nick);
void (*ircd_cmd_release_svshold)(char *nick);
void (*ircd_cmd_unsgline)(char *mask);
diff --git a/src/init.c b/src/init.c
index 7990da17f..3f66a100d 100644
--- a/src/init.c
+++ b/src/init.c
@@ -765,6 +765,20 @@ int init_secondary(int ac, char **av)
strerror(openlog_errno));
}
+ if (!ircd->delay_cl_intro)
+ init_tertiary();
+
+ /* Success! */
+ return 0;
+}
+
+/*************************************************************************/
+
+void init_tertiary()
+{
+ /* Begin our burst..*/
+ anope_cmd_bob();
+
/* Bring in our pseudo-clients */
introduce_user(NULL);
@@ -774,16 +788,14 @@ int init_secondary(int ac, char **av)
anope_cmd_join(s_GlobalNoticer, LogChannel, time(NULL));
}
+ /* End our burst.. */
anope_cmd_eob();
/**
- * Load our delayed modeles - modules that are planing on making clients need to wait till now
- * where as modules wanting to modify our ircd connection messages need to load eariler :|
- **/
+ * Load our delayed modeles - modules that are planing on making clients need to wait till now
+ * where as modules wanting to modify our ircd connection messages need to load eariler :|
+ **/
modules_delayed_init();
-
- /* Success! */
- return 0;
}
/*************************************************************************/
diff --git a/src/ircd.c b/src/ircd.c
index 52fb8fbbc..398f9b577 100644
--- a/src/ircd.c
+++ b/src/ircd.c
@@ -92,6 +92,7 @@ void initIrcdProto()
ircdproto.ircd_cmd_svsnick = NULL;
ircdproto.ircd_cmd_vhost_on = NULL;
ircdproto.ircd_cmd_connect = NULL;
+ ircdproto.ircd_cmd_bob = NULL;
ircdproto.ircd_cmd_svshold = NULL;
ircdproto.ircd_cmd_release_svshold = NULL;
ircdproto.ircd_cmd_unsgline = NULL;
@@ -555,6 +556,11 @@ void anope_cmd_connect(int servernum)
ircdproto.ircd_cmd_connect(servernum);
}
+void anope_cmd_bob()
+{
+ ircdproto.ircd_cmd_bob();
+}
+
void anope_cmd_svshold(char *nick)
{
ircdproto.ircd_cmd_svshold(nick);
@@ -967,6 +973,11 @@ void pmodule_cmd_connect(void (*func) (int servernum))
ircdproto.ircd_cmd_connect = func;
}
+void pmodule_cmd_bob(void (*func) ())
+{
+ ircdproto.ircd_cmd_bob = func;
+}
+
void pmodule_cmd_svshold(void (*func) (char *nick))
{
ircdproto.ircd_cmd_svshold = func;
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index 1d3169fed..59da13223 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -108,8 +108,9 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
- 0, /* +j */
- 0, /* +j mode */
+ 0, /* +j */
+ 0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -909,8 +910,10 @@ void bahamut_cmd_connect(int servernum)
bahamut_cmd_burst();
}
-
-
+void bahamut_cmd_bob()
+{
+ /* Not used */
+}
/* EVENT : SERVER */
@@ -1619,6 +1622,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(bahamut_cmd_svsnick);
pmodule_cmd_vhost_on(bahamut_cmd_vhost_on);
pmodule_cmd_connect(bahamut_cmd_connect);
+ pmodule_cmd_bob(bahamut_cmd_bob);
pmodule_cmd_svshold(bahamut_cmd_svshold);
pmodule_cmd_release_svshold(bahamut_cmd_release_svshold);
pmodule_cmd_unsgline(bahamut_cmd_unsgline);
diff --git a/src/protocol/bahamut.h b/src/protocol/bahamut.h
index a40d3434c..0f42dadbd 100644
--- a/src/protocol/bahamut.h
+++ b/src/protocol/bahamut.h
@@ -111,6 +111,7 @@ void bahamut_cmd_chg_nick(char *oldnick, char *newnick);
void bahamut_cmd_svsnick(char *source, char *guest, time_t when);
void bahamut_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void bahamut_cmd_connect(int servernum);
+void bahamut_cmd_bob();
void bahamut_cmd_svshold(char *nick);
void bahamut_cmd_release_svshold(char *nick);
void bahamut_cmd_unsgline(char *mask);
diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c
index eef1ea870..04a97b486 100644
--- a/src/protocol/charybdis.c
+++ b/src/protocol/charybdis.c
@@ -107,6 +107,7 @@ IRCDVar myIrcd[] = {
1, /* CIDR channelbans */
0, /* +j */
0, /* +j Mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -1044,6 +1045,11 @@ void charybdis_cmd_connect(int servernum)
charybdis_cmd_svinfo();
}
+void charybdis_cmd_bob()
+{
+ /* Not used */
+}
+
void charybdis_cmd_bot_nick(char *nick, char *user, char *host, char *real,
char *modes)
{
@@ -1927,6 +1933,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(charybdis_cmd_svsnick);
pmodule_cmd_vhost_on(charybdis_cmd_vhost_on);
pmodule_cmd_connect(charybdis_cmd_connect);
+ pmodule_cmd_bob(charybdis_cmd_bob);
pmodule_cmd_svshold(charybdis_cmd_svshold);
pmodule_cmd_release_svshold(charybdis_cmd_release_svshold);
pmodule_cmd_unsgline(charybdis_cmd_unsgline);
diff --git a/src/protocol/charybdis.h b/src/protocol/charybdis.h
index 5b418259c..d8cf83d2c 100644
--- a/src/protocol/charybdis.h
+++ b/src/protocol/charybdis.h
@@ -99,6 +99,7 @@ void charybdis_cmd_chg_nick(char *oldnick, char *newnick);
void charybdis_cmd_svsnick(char *source, char *guest, time_t when);
void charybdis_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void charybdis_cmd_connect(int servernum);
+void charybdis_cmd_bob();
void charybdis_cmd_svshold(char *nick);
void charybdis_cmd_release_svshold(char *nick);
void charybdis_cmd_unsgline(char *mask);
diff --git a/src/protocol/dreamforge.c b/src/protocol/dreamforge.c
index ba669dd0a..10ab74e4d 100644
--- a/src/protocol/dreamforge.c
+++ b/src/protocol/dreamforge.c
@@ -108,6 +108,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -639,6 +640,11 @@ void dreamforge_cmd_connect(int servernum)
dreamforge_cmd_server(ServerName, 1, ServerDesc);
}
+void dreamforge_cmd_bob()
+{
+ /* Not used */
+}
+
void dreamforge_cmd_bot_chan_mode(char *nick, char *chan)
{
anope_cmd_mode(nick, chan, "%s %s %s", ircd->botchanumode, nick, nick);
@@ -1324,6 +1330,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(dreamforge_cmd_svsnick);
pmodule_cmd_vhost_on(dreamforge_cmd_vhost_on);
pmodule_cmd_connect(dreamforge_cmd_connect);
+ pmodule_cmd_bob(dreamforge_cmd_bob);
pmodule_cmd_svshold(dreamforge_cmd_svshold);
pmodule_cmd_release_svshold(dreamforge_cmd_release_svshold);
pmodule_cmd_unsgline(dreamforge_cmd_unsgline);
diff --git a/src/protocol/dreamforge.h b/src/protocol/dreamforge.h
index 096268057..5d113afd1 100644
--- a/src/protocol/dreamforge.h
+++ b/src/protocol/dreamforge.h
@@ -91,6 +91,7 @@ void dreamforge_cmd_chg_nick(char *oldnick, char *newnick);
void dreamforge_cmd_svsnick(char *source, char *guest, time_t when);
void dreamforge_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void dreamforge_cmd_connect(int servernum);
+void dreamforge_cmd_bob();
void dreamforge_cmd_svshold(char *nick);
void dreamforge_cmd_release_svshold(char *nick);
void dreamforge_cmd_unsgline(char *mask);
diff --git a/src/protocol/hybrid.c b/src/protocol/hybrid.c
index aa05506f1..323c34893 100644
--- a/src/protocol/hybrid.c
+++ b/src/protocol/hybrid.c
@@ -108,6 +108,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -840,6 +841,11 @@ void hybrid_cmd_connect(int servernum)
hybrid_cmd_svinfo();
}
+void hybrid_cmd_bob()
+{
+ /* Not used */
+}
+
void hybrid_cmd_svsinfo()
{
/* not used */
@@ -1513,6 +1519,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(hybrid_cmd_svsnick);
pmodule_cmd_vhost_on(hybrid_cmd_vhost_on);
pmodule_cmd_connect(hybrid_cmd_connect);
+ pmodule_cmd_bob(hybrid_cmd_bob);
pmodule_cmd_svshold(hybrid_cmd_svshold);
pmodule_cmd_release_svshold(hybrid_cmd_release_svshold);
pmodule_cmd_unsgline(hybrid_cmd_unsgline);
diff --git a/src/protocol/hybrid.h b/src/protocol/hybrid.h
index b57d7adc2..db1f7f3bd 100644
--- a/src/protocol/hybrid.h
+++ b/src/protocol/hybrid.h
@@ -96,6 +96,7 @@ void hybrid_cmd_chg_nick(char *oldnick, char *newnick);
void hybrid_cmd_svsnick(char *source, char *guest, time_t when);
void hybrid_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void hybrid_cmd_connect(int servernum);
+void hybrid_cmd_bob();
void hybrid_cmd_svshold(char *nick);
void hybrid_cmd_release_svshold(char *nick);
void hybrid_cmd_unsgline(char *mask);
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index ed9acd211..9fca32bf7 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -127,6 +127,7 @@ IRCDVar myIrcd[] = {
1, /* CIDR channelbans */
1, /* +j */
CMODE_j, /* +j Mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -1174,6 +1175,11 @@ void inspircd_cmd_connect(int servernum)
new_server(NULL, ServerName, ServerDesc, SERVER_ISME, NULL);
}
+void inspircd_cmd_bob()
+{
+ /* Not used */
+}
+
/* Events */
int anope_event_ping(char *source, int ac, char **av)
@@ -1895,6 +1901,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(inspircd_cmd_svsnick);
pmodule_cmd_vhost_on(inspircd_cmd_vhost_on);
pmodule_cmd_connect(inspircd_cmd_connect);
+ pmodule_cmd_bob(inspircd_cmd_bob);
pmodule_cmd_svshold(inspircd_cmd_svshold);
pmodule_cmd_release_svshold(inspircd_cmd_release_svshold);
pmodule_cmd_unsgline(inspircd_cmd_unsqline);
diff --git a/src/protocol/inspircd11.h b/src/protocol/inspircd11.h
index 7229b3c9e..60d32b4c7 100755
--- a/src/protocol/inspircd11.h
+++ b/src/protocol/inspircd11.h
@@ -105,6 +105,7 @@ void inspircd_cmd_chg_nick(char *oldnick, char *newnick);
void inspircd_cmd_svsnick(char *source, char *guest, time_t when);
void inspircd_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void inspircd_cmd_connect(int servernum);
+void inspircd_cmd_bob();
void inspircd_cmd_svshold(char *nick);
void inspircd_cmd_release_svshold(char *nick);
void inspircd_cmd_unsgline(char *mask);
diff --git a/src/protocol/plexus2.c b/src/protocol/plexus2.c
index 1f01924f5..4a42d150c 100644
--- a/src/protocol/plexus2.c
+++ b/src/protocol/plexus2.c
@@ -106,6 +106,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -989,6 +990,12 @@ plexus_cmd_connect (int servernum)
}
void
+plexus_cmd_bob()
+{
+ /* not used */
+}
+
+void
plexus_cmd_svsinfo ()
{
/* not used */
@@ -1817,6 +1824,7 @@ moduleAddAnopeCmds ()
pmodule_cmd_svsnick (plexus_cmd_svsnick);
pmodule_cmd_vhost_on (plexus_cmd_vhost_on);
pmodule_cmd_connect (plexus_cmd_connect);
+ pmodule_cmd_bob(plexus_cmd_bob);
pmodule_cmd_svshold (plexus_cmd_svshold);
pmodule_cmd_release_svshold (plexus_cmd_release_svshold);
pmodule_cmd_unsgline (plexus_cmd_unsgline);
diff --git a/src/protocol/plexus2.h b/src/protocol/plexus2.h
index 912c8e73b..2c5d9f115 100644
--- a/src/protocol/plexus2.h
+++ b/src/protocol/plexus2.h
@@ -105,6 +105,7 @@ void plexus_cmd_chg_nick(char *oldnick, char *newnick);
void plexus_cmd_svsnick(char *source, char *guest, time_t when);
void plexus_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void plexus_cmd_connect(int servernum);
+void plexus_cmd_bob();
void plexus_cmd_svshold(char *nick);
void plexus_cmd_release_svshold(char *nick);
void plexus_cmd_unsgline(char *mask);
diff --git a/src/protocol/plexus3.c b/src/protocol/plexus3.c
index 375687ae1..fbd9d2bbf 100644
--- a/src/protocol/plexus3.c
+++ b/src/protocol/plexus3.c
@@ -106,6 +106,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -966,6 +967,12 @@ plexus_cmd_connect (int servernum)
}
void
+plexus_cmd_bob()
+{
+ /* not used */
+}
+
+void
plexus_cmd_svsinfo ()
{
/* not used */
@@ -1794,6 +1801,7 @@ moduleAddAnopeCmds ()
pmodule_cmd_svsnick (plexus_cmd_svsnick);
pmodule_cmd_vhost_on (plexus_cmd_vhost_on);
pmodule_cmd_connect (plexus_cmd_connect);
+ pmodule_cmd_bob(plexus_cmd_bob);
pmodule_cmd_svshold (plexus_cmd_svshold);
pmodule_cmd_release_svshold (plexus_cmd_release_svshold);
pmodule_cmd_unsgline (plexus_cmd_unsgline);
diff --git a/src/protocol/plexus3.h b/src/protocol/plexus3.h
index bc0384db6..489de9524 100644
--- a/src/protocol/plexus3.h
+++ b/src/protocol/plexus3.h
@@ -92,6 +92,7 @@ void plexus_cmd_chg_nick(char *oldnick, char *newnick);
void plexus_cmd_svsnick(char *source, char *guest, time_t when);
void plexus_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void plexus_cmd_connect(int servernum);
+void plexus_cmd_bob();
void plexus_cmd_svshold(char *nick);
void plexus_cmd_release_svshold(char *nick);
void plexus_cmd_unsgline(char *mask);
diff --git a/src/protocol/ptlink.c b/src/protocol/ptlink.c
index cd5f57c9c..785711d78 100644
--- a/src/protocol/ptlink.c
+++ b/src/protocol/ptlink.c
@@ -108,6 +108,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -881,6 +882,10 @@ void ptlink_cmd_connect(int servernum)
ptlink_cmd_svsinfo();
}
+void ptlink_cmd_bob()
+{
+ /* Not used */
+}
int anope_event_privmsg(char *source, int ac, char **av)
@@ -1736,6 +1741,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(ptlink_cmd_svsnick);
pmodule_cmd_vhost_on(ptlink_cmd_vhost_on);
pmodule_cmd_connect(ptlink_cmd_connect);
+ pmodule_cmd_bob(ptlink_cmd_bob);
pmodule_cmd_svshold(ptlink_cmd_svshold);
pmodule_cmd_release_svshold(ptlink_cmd_release_svshold);
pmodule_cmd_unsgline(ptlink_cmd_unsgline);
diff --git a/src/protocol/ptlink.h b/src/protocol/ptlink.h
index e546f2e26..73e116b87 100644
--- a/src/protocol/ptlink.h
+++ b/src/protocol/ptlink.h
@@ -131,6 +131,7 @@ void ptlink_cmd_chg_nick(char *oldnick, char *newnick);
void ptlink_cmd_svsnick(char *source, char *guest, time_t when);
void ptlink_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void ptlink_cmd_connect(int servernum);
+void ptlink_cmd_bob();
void ptlink_cmd_svshold(char *nick);
void ptlink_cmd_release_svshold(char *nick);
void ptlink_cmd_unsgline(char *mask);
diff --git a/src/protocol/rageircd.c b/src/protocol/rageircd.c
index a6d444db9..5ad02f5ec 100644
--- a/src/protocol/rageircd.c
+++ b/src/protocol/rageircd.c
@@ -108,7 +108,8 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
- }
+ 0, /* Use delayed client introduction. */
+ }
,
{NULL}
};
@@ -785,6 +786,11 @@ void rageircd_cmd_connect(int servernum)
rageircd_cmd_burst();
}
+void rageircd_cmd_bob()
+{
+ /* Not used */
+}
+
void rageircd_set_umode(User * user, int ac, char **av)
{
int add = 1; /* 1 if adding modes, 0 if deleting */
@@ -1616,6 +1622,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(rageircd_cmd_svsnick);
pmodule_cmd_vhost_on(rageircd_cmd_vhost_on);
pmodule_cmd_connect(rageircd_cmd_connect);
+ pmodule_cmd_bob(rageircd_cmd_bob);
pmodule_cmd_svshold(rageircd_cmd_svshold);
pmodule_cmd_release_svshold(rageircd_cmd_release_svshold);
pmodule_cmd_unsgline(rageircd_cmd_unsgline);
diff --git a/src/protocol/rageircd.h b/src/protocol/rageircd.h
index acc99a6bf..73d3459bd 100644
--- a/src/protocol/rageircd.h
+++ b/src/protocol/rageircd.h
@@ -94,6 +94,7 @@ void rageircd_cmd_chg_nick(char *oldnick, char *newnick);
void rageircd_cmd_svsnick(char *source, char *guest, time_t when);
void rageircd_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void rageircd_cmd_connect(int servernum);
+void rageircd_cmd_bob();
void rageircd_cmd_svshold(char *nick);
void rageircd_cmd_release_svshold(char *nick);
void rageircd_cmd_unsgline(char *mask);
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index 5ec2a1919..6db5f16d9 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -108,7 +108,8 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
- }
+ 0, /* Use delayed client introduction. */
+ }
,
{NULL}
};
@@ -987,6 +988,11 @@ void ratbox_cmd_connect(int servernum)
ratbox_cmd_svinfo();
}
+void ratbox_cmd_bob()
+{
+ /* Not used */
+}
+
void ratbox_cmd_bot_nick(char *nick, char *user, char *host, char *real,
char *modes)
{
@@ -1822,6 +1828,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(ratbox_cmd_svsnick);
pmodule_cmd_vhost_on(ratbox_cmd_vhost_on);
pmodule_cmd_connect(ratbox_cmd_connect);
+ pmodule_cmd_bob(ratbox_cmd_bob);
pmodule_cmd_svshold(ratbox_cmd_svshold);
pmodule_cmd_release_svshold(ratbox_cmd_release_svshold);
pmodule_cmd_unsgline(ratbox_cmd_unsgline);
diff --git a/src/protocol/ratbox.h b/src/protocol/ratbox.h
index 4cc82f712..a256096f5 100644
--- a/src/protocol/ratbox.h
+++ b/src/protocol/ratbox.h
@@ -98,6 +98,7 @@ void ratbox_cmd_chg_nick(char *oldnick, char *newnick);
void ratbox_cmd_svsnick(char *source, char *guest, time_t when);
void ratbox_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void ratbox_cmd_connect(int servernum);
+void ratbox_cmd_bob();
void ratbox_cmd_svshold(char *nick);
void ratbox_cmd_release_svshold(char *nick);
void ratbox_cmd_unsgline(char *mask);
diff --git a/src/protocol/shadowircd.c b/src/protocol/shadowircd.c
index c23c51400..29e201c82 100644
--- a/src/protocol/shadowircd.c
+++ b/src/protocol/shadowircd.c
@@ -109,6 +109,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -989,6 +990,11 @@ void shadowircd_cmd_connect(int servernum)
shadowircd_cmd_svinfo();
}
+void shadowircd_cmd_bob()
+{
+ /* Not used */
+}
+
void shadowircd_cmd_bot_nick(char *nick, char *user, char *host,
char *real, char *modes)
{
@@ -1773,6 +1779,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(shadowircd_cmd_svsnick);
pmodule_cmd_vhost_on(shadowircd_cmd_vhost_on);
pmodule_cmd_connect(shadowircd_cmd_connect);
+ pmodule_cmd_bob(shadowircd_cmd_bob);
pmodule_cmd_svshold(shadowircd_cmd_svshold);
pmodule_cmd_release_svshold(shadowircd_cmd_release_svshold);
pmodule_cmd_unsgline(shadowircd_cmd_unsgline);
diff --git a/src/protocol/shadowircd.h b/src/protocol/shadowircd.h
index 17f701163..2a94841b7 100644
--- a/src/protocol/shadowircd.h
+++ b/src/protocol/shadowircd.h
@@ -123,6 +123,7 @@ void shadowircd_cmd_chg_nick(char *oldnick, char *newnick);
void shadowircd_cmd_svsnick(char *source, char *guest, time_t when);
void shadowircd_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void shadowircd_cmd_connect(int servernum);
+void shadowircd_cmd_bob();
void shadowircd_cmd_svshold(char *nick);
void shadowircd_cmd_release_svshold(char *nick);
void shadowircd_cmd_unsgline(char *mask);
diff --git a/src/protocol/solidircd.c b/src/protocol/solidircd.c
index 4c20de1c0..52e6c5dd4 100644
--- a/src/protocol/solidircd.c
+++ b/src/protocol/solidircd.c
@@ -108,8 +108,9 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
- 0, /* +j */
- 0, /* +j mode */
+ 0, /* +j */
+ 0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -1649,6 +1650,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(solidircd_cmd_svsnick);
pmodule_cmd_vhost_on(solidircd_cmd_vhost_on);
pmodule_cmd_connect(solidircd_cmd_connect);
+ pmodule_cmd_bob(solidircd_cmd_burst);
pmodule_cmd_svshold(solidircd_cmd_svshold);
pmodule_cmd_release_svshold(solidircd_cmd_release_svshold);
pmodule_cmd_unsgline(solidircd_cmd_unsgline);
diff --git a/src/protocol/solidircd.h b/src/protocol/solidircd.h
index 28775cffb..2b26dfcc4 100644
--- a/src/protocol/solidircd.h
+++ b/src/protocol/solidircd.h
@@ -118,6 +118,7 @@ void solidircd_cmd_chg_nick(char *oldnick, char *newnick);
void solidircd_cmd_svsnick(char *source, char *guest, time_t when);
void solidircd_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void solidircd_cmd_connect(int servernum);
+void solidircd_cmd_bob();
void solidircd_cmd_svshold(char *nick);
void solidircd_cmd_release_svshold(char *nick);
void solidircd_cmd_unsgline(char *mask);
diff --git a/src/protocol/ultimate2.c b/src/protocol/ultimate2.c
index 88d7d0a4f..a99ae105b 100644
--- a/src/protocol/ultimate2.c
+++ b/src/protocol/ultimate2.c
@@ -108,6 +108,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -895,6 +896,11 @@ void ultimate2_cmd_connect(int servernum)
ultimate2_cmd_server(ServerName, 1, ServerDesc);
}
+void ultimate2_cmd_bob()
+{
+ /* Not used */
+}
+
/* CHGHOST */
void ultimate2_cmd_chghost(char *nick, char *vhost)
{
@@ -1674,6 +1680,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(ultimate2_cmd_svsnick);
pmodule_cmd_vhost_on(ultimate2_cmd_vhost_on);
pmodule_cmd_connect(ultimate2_cmd_connect);
+ pmodule_cmd_bob(ultimate2_cmd_bob);
pmodule_cmd_svshold(ultimate2_cmd_svshold);
pmodule_cmd_release_svshold(ultimate2_cmd_release_svshold);
pmodule_cmd_unsgline(ultimate2_cmd_unsgline);
diff --git a/src/protocol/ultimate2.h b/src/protocol/ultimate2.h
index 552be5bd7..687f264b2 100644
--- a/src/protocol/ultimate2.h
+++ b/src/protocol/ultimate2.h
@@ -99,6 +99,7 @@ void ultimate2_cmd_chg_nick(char *oldnick, char *newnick);
void ultimate2_cmd_svsnick(char *source, char *guest, time_t when);
void ultimate2_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void ultimate2_cmd_connect(int servernum);
+void ultimate2_cmd_bob();
void ultimate2_cmd_svshold(char *nick);
void ultimate2_cmd_release_svshold(char *nick);
void ultimate2_cmd_unsgline(char *mask);
diff --git a/src/protocol/ultimate3.c b/src/protocol/ultimate3.c
index 9daaa5bab..5afde95e0 100644
--- a/src/protocol/ultimate3.c
+++ b/src/protocol/ultimate3.c
@@ -108,6 +108,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -1467,6 +1468,11 @@ void ultimate3_cmd_connect(int servernum)
ultimate3_cmd_burst();
}
+void ultimate3_cmd_bob()
+{
+ /* Not used */
+}
+
/* SVSHOLD - set */
void ultimate3_cmd_svshold(char *nick)
{
@@ -1757,6 +1763,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(ultimate3_cmd_svsnick);
pmodule_cmd_vhost_on(ultimate3_cmd_vhost_on);
pmodule_cmd_connect(ultimate3_cmd_connect);
+ pmodule_cmd_bob(ultimate3_cmd_bob);
pmodule_cmd_svshold(ultimate3_cmd_svshold);
pmodule_cmd_release_svshold(ultimate3_cmd_release_svshold);
pmodule_cmd_unsgline(ultimate3_cmd_unsgline);
diff --git a/src/protocol/ultimate3.h b/src/protocol/ultimate3.h
index 945e6a7f3..2191dc69f 100644
--- a/src/protocol/ultimate3.h
+++ b/src/protocol/ultimate3.h
@@ -104,6 +104,7 @@ void ultimate3_cmd_chg_nick(char *oldnick, char *newnick);
void ultimate3_cmd_svsnick(char *source, char *guest, time_t when);
void ultimate3_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void ultimate3_cmd_connect(int servernum);
+void ultimate3_cmd_bob();
void ultimate3_cmd_svshold(char *nick);
void ultimate3_cmd_release_svshold(char *nick);
void ultimate3_cmd_unsgline(char *mask);
diff --git a/src/protocol/unreal31.c b/src/protocol/unreal31.c
index 0159be396..2284a9faf 100644
--- a/src/protocol/unreal31.c
+++ b/src/protocol/unreal31.c
@@ -110,6 +110,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -989,6 +990,11 @@ void unreal_cmd_connect(int servernum)
unreal_cmd_server(ServerName, 1, ServerDesc);
}
+void unreal_cmd_bob()
+{
+ /* Not used */
+}
+
/* Events */
int anope_event_ping(char *source, int ac, char **av)
@@ -1532,6 +1538,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(unreal_cmd_svsnick);
pmodule_cmd_vhost_on(unreal_cmd_vhost_on);
pmodule_cmd_connect(unreal_cmd_connect);
+ pmodule_cmd_bob(unreal_cmd_bob);
pmodule_cmd_svshold(unreal_cmd_svshold);
pmodule_cmd_release_svshold(unreal_cmd_release_svshold);
pmodule_cmd_unsgline(unreal_cmd_unsgline);
diff --git a/src/protocol/unreal31.h b/src/protocol/unreal31.h
index e7de79f3a..674a6e0f1 100644
--- a/src/protocol/unreal31.h
+++ b/src/protocol/unreal31.h
@@ -104,6 +104,7 @@ void unreal_cmd_chg_nick(char *oldnick, char *newnick);
void unreal_cmd_svsnick(char *source, char *guest, time_t when);
void unreal_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void unreal_cmd_connect(int servernum);
+void unreal_cmd_bob();
void unreal_cmd_svshold(char *nick);
void unreal_cmd_release_svshold(char *nick);
void unreal_cmd_unsgline(char *mask);
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 3eeb31bbd..0919fabbe 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -110,6 +110,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
1, /* +j */
CMODE_j, /* +j Mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -1114,6 +1115,11 @@ void unreal_cmd_connect(int servernum)
unreal_cmd_server(ServerName, 1, ServerDesc);
}
+void unreal_cmd_bob()
+{
+ /* Not used */
+}
+
/* Events */
int anope_event_ping(char *source, int ac, char **av)
@@ -2197,6 +2203,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(unreal_cmd_svsnick);
pmodule_cmd_vhost_on(unreal_cmd_vhost_on);
pmodule_cmd_connect(unreal_cmd_connect);
+ pmodule_cmd_bob(unreal_cmd_bob);
pmodule_cmd_svshold(unreal_cmd_svshold);
pmodule_cmd_release_svshold(unreal_cmd_release_svshold);
pmodule_cmd_unsgline(unreal_cmd_unsgline);
diff --git a/src/protocol/unreal32.h b/src/protocol/unreal32.h
index dd09a043a..fb9abc641 100644
--- a/src/protocol/unreal32.h
+++ b/src/protocol/unreal32.h
@@ -134,6 +134,7 @@ void unreal_cmd_chg_nick(char *oldnick, char *newnick);
void unreal_cmd_svsnick(char *source, char *guest, time_t when);
void unreal_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void unreal_cmd_connect(int servernum);
+void unreal_cmd_bob();
void unreal_cmd_svshold(char *nick);
void unreal_cmd_release_svshold(char *nick);
void unreal_cmd_unsgline(char *mask);
diff --git a/src/protocol/viagra.c b/src/protocol/viagra.c
index e53d38b2f..d53e0a7c3 100644
--- a/src/protocol/viagra.c
+++ b/src/protocol/viagra.c
@@ -109,6 +109,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
0, /* +j */
0, /* +j mode */
+ 0, /* Use delayed client introduction. */
}
,
{NULL}
@@ -983,6 +984,11 @@ void viagra_cmd_connect(int servernum)
viagra_cmd_burst();
}
+void viagra_cmd_bob()
+{
+ /* Not used */
+}
+
/* EVENT : OS */
int anope_event_os(char *source, int ac, char **av)
{
@@ -1656,6 +1662,7 @@ void moduleAddAnopeCmds()
pmodule_cmd_svsnick(viagra_cmd_svsnick);
pmodule_cmd_vhost_on(viagra_cmd_vhost_on);
pmodule_cmd_connect(viagra_cmd_connect);
+ pmodule_cmd_bob(viagra_cmd_bob);
pmodule_cmd_svshold(viagra_cmd_svshold);
pmodule_cmd_release_svshold(viagra_cmd_release_svshold);
pmodule_cmd_unsgline(viagra_cmd_unsgline);
diff --git a/src/protocol/viagra.h b/src/protocol/viagra.h
index 1cd84ad4b..64151de79 100644
--- a/src/protocol/viagra.h
+++ b/src/protocol/viagra.h
@@ -113,6 +113,7 @@ void viagra_cmd_chg_nick(char *oldnick, char *newnick);
void viagra_cmd_svsnick(char *source, char *guest, time_t when);
void viagra_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
void viagra_cmd_connect(int servernum);
+void viagra_cmd_bob();
void viagra_cmd_svshold(char *nick);
void viagra_cmd_release_svshold(char *nick);
void viagra_cmd_unsgline(char *mask);
diff --git a/version.log b/version.log
index f106c0f20..1870eecfd 100644
--- a/version.log
+++ b/version.log
@@ -9,10 +9,11 @@ VERSION_MAJOR="1"
VERSION_MINOR="8"
VERSION_PATCH="2"
VERSION_EXTRA="-svn"
-VERSION_BUILD="2534"
+VERSION_BUILD="2535"
# $Log$ # Changes since 1.8.2 Release
-#Revision 2534 - Added ability to mark users as either ID'd or UNID'd after user introduction. This is the responsibility of the protocol module!(Required for Insp 1.2)
+#Revision 2535 - Added option for delayed pseudo-client introduction. (Required for Insp 1.2)
+#Revision 2534 - Added ability to mark users as either ID'd or UNID'd after user introduction. This is the responsibility of the protocol module! (Required for Insp 1.2)
#Revision 2533 - Backport of r2531, reset +r on registered channels after a netmerge when our creation time is newer than what we recieved.
#Revision 2525 - Fix bug #1097. CS FORBID now clears excepts & invites before banning everyone to avoid rejoin floods.
#Revision 2511 - Updated French language file, patch from Saka