diff options
author | jantje_85 <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-08-03 17:25:32 +0000 |
---|---|---|
committer | jantje_85 <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-08-03 17:25:32 +0000 |
commit | b13836f3cf35f752bee09029528204c8c40c8da8 (patch) | |
tree | 63df9bc653003225172c36b11597135633478c57 /src | |
parent | 2bd483c2734c76f295a0885ce93ce1f5dc1eb810 (diff) |
Fixed do_server() so it doesn't go nuts if a SID is the source. Added some sanity checks and debug output as well.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@2402 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/servers.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/servers.c b/src/servers.c index 8aa5b2a12..cf872512f 100644 --- a/src/servers.c +++ b/src/servers.c @@ -122,6 +122,10 @@ Server *new_server(Server * uplink, const char *name, const char *desc, { Server *serv; + if (debug) + alog("debug: Creating %s(%s) uplinked to %s", name, suid ? suid : "", + uplink ? uplink->name : "No uplink"); + serv = scalloc(sizeof(Server), 1); if (!name) name = ""; @@ -155,10 +159,10 @@ Server *new_server(Server * uplink, const char *name, const char *desc, uplink->links = serv; } /* Check if this is our uplink server */ - if ((uplink == me_server) && !(flags & SERVER_JUPED)) { + if ((uplink == me_server) && !(flags & SERVER_JUPED)) { serv_uplink = serv; - serv->flags |= SERVER_ISUPLINK; - } + serv->flags |= SERVER_ISUPLINK; + } /* Write the StartGlobal (to non-juped servers) */ if (GlobalOnCycle && GlobalOnCycleUP && !(flags & SERVER_JUPED)) @@ -186,14 +190,15 @@ static void delete_server(Server * serv, const char *quitreason) NickAlias *na; if (!serv) { - if (debug) { + if (debug) alog("debug: delete_server() called with NULL arg!"); - } return; } if (debug) - alog("debug: delete_server() called for %s", serv->name); + alog("debug: Deleting %s(%s) uplinked to %s(%s)", serv->name, + serv->suid ? serv->suid : "", serv->uplink ? serv->uplink->name : "???", + serv->uplink ? serv->uplink->suid : ""); if (ircdcap->noquit || ircdcap->qs) { if ((uplink_capab & ircdcap->noquit) @@ -366,12 +371,18 @@ void do_server(const char *source, char *servername, char *hops, source); } } - if (source[0] == '\0') s = me_server; - else + else if (UseTS6 && ircd->ts6) { + s = findserver_uid(servlist, source); + if (!s) + s = findserver(servlist, source); + } else s = findserver(servlist, source); + if (!s) + fatal("FATAL ERROR: Received new server from nonexistant uplink."); + new_server(s, servername, descript, 0, numeric); send_event(EVENT_SERVER_CONNECT, 1, servername); } @@ -573,9 +584,6 @@ static unsigned int ts6_uid_index = 9; /* last slot in uid buf */ void ts6_uid_init(void) { - unsigned int i; - char buf[BUFSIZE]; - /* check just in case... you can never be too safe. */ if (TS6SID != NULL) { snprintf(ts6_new_uid, 10, "%sAAAAAA", TS6SID); |