summaryrefslogtreecommitdiff
path: root/src/servers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/servers.c')
-rw-r--r--src/servers.c63
1 files changed, 41 insertions, 22 deletions
diff --git a/src/servers.c b/src/servers.c
index d69ac9afd..4d6a7f461 100644
--- a/src/servers.c
+++ b/src/servers.c
@@ -67,7 +67,7 @@ Server *next_server(int flags)
*/
Server *new_server(Server * uplink, const char *name, const char *desc,
- uint16 flags)
+ uint16 flags, char *suid)
{
Server *serv;
@@ -78,6 +78,8 @@ Server *new_server(Server * uplink, const char *name, const char *desc,
serv->desc = sstrdup(desc);
serv->flags = flags;
serv->uplink = uplink;
+ serv->suid = suid;
+ serv->sync = -1;
serv->links = NULL;
serv->prev = NULL;
@@ -197,18 +199,41 @@ Server *findserver(Server * s, const char *name)
return s;
}
+/*
+ Not Synced = -1
+ Error = 0
+ Synced = 1
+*/
+
+int anope_check_sync(const char *name)
+{
+ Server *s;
+ s = findserver(servlist, name);
+
+ if (!s) {
+ return 0;
+ }
+ if (s->sync) {
+ return s->sync;
+ } else {
+ return 0;
+ }
+}
+
/*************************************************************************/
/* :<introducing server> SERVER <servername> <hops> :<description>
*/
-void do_server(const char *source, int ac, char **av)
+void do_server(const char *source, char *servername, char *hops,
+ char *descript, char *numeric)
{
- Server *s;
+ Server *s, *s2;
if (debug) {
if (!*source) {
- alog("debug: Server introduced (%s)", av[0]);
+ alog("debug: Server introduced (%s)", servername);
} else {
- alog("debug: Server introduced (%s) from %s", av[0], source);
+ alog("debug: Server introduced (%s) from %s", servername,
+ source);
}
}
@@ -216,23 +241,8 @@ void do_server(const char *source, int ac, char **av)
s = me_server;
else
s = findserver(servlist, source);
- if (ircd->numservargs == 4) {
- if (ac < 4)
- alog("Malformed SERVER received (less than 4 params)");
- else
- new_server(s, av[0], av[3], 0);
- }
- if (ircd->numservargs == 7) {
- if (ac < 7)
- alog("Malformed SERVER received (less than 7 params)");
- else
- new_server(s, av[0], av[6], 0);
- } else {
- if (ac < 3)
- alog("Malformed SERVER received (less than 3 params)");
- else
- new_server(s, av[0], av[2], 0);
- }
+
+ new_server(s, servername, descript, 0, numeric);
}
/*************************************************************************/
@@ -293,6 +303,10 @@ void capab_parse(int ac, char **av)
}
if (!stricmp(s, "NICKIP")) {
uplink_capab |= CAPAB_NICKIP;
+ /* Update the struct so that we know we can get NICKIP */
+ if (!ircd->nickip) {
+ ircd->nickip = 1;
+ }
}
if (!stricmp(s, "SSJOIN")) {
uplink_capab |= CAPAB_NSJOIN;
@@ -352,6 +366,11 @@ void capab_parse(int ac, char **av)
uplink_capab |= CAPAB_SSJ3;
}
+ if (!stricmp(s, "SJB64")) {
+ uplink_capab |= CAPAB_SJB64;
+
+ }
+
if (!stricmp(s, "CHANMODES")) {
uplink_capab |= CAPAB_CHANMODE;
if (tmp) {