summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/servers.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/servers.c b/src/servers.c
index cb990032e..29649f114 100644
--- a/src/servers.c
+++ b/src/servers.c
@@ -155,19 +155,24 @@ Server *new_server(Server * server_uplink, const char *name, const char *desc,
server_uplink->links->prev = serv;
server_uplink->links = serv;
}
- /* Check if this is our uplink server */
- if ((server_uplink == me_server) && !(flags & SERVER_JUPED)) {
- serv_uplink = serv;
- serv->flags |= SERVER_ISUPLINK;
- /* Bring in our pseudo-clients */
- introduce_user(NULL);
+ /* Check if this is our uplink server */
+ if ((server_uplink == me_server) && !(flags & SERVER_JUPED))
+ {
+ // XXX: Apparantly we set ourselves as serv_uplink before we (really) set the uplink when we recieve SERVER. This is wrong and ugly.
+ if (serv_uplink != NULL)
+ {
+ /* Bring in our pseudo-clients */
+ introduce_user(NULL);
- /* And hybrid needs Global joined in the logchan */
- if (logchan && ircd->join2msg) {
- /* XXX might desync */
- ircdproto->SendJoin(findbot(s_GlobalNoticer), LogChannel, time(NULL));
+ /* And hybrid needs Global joined in the logchan */
+ if (logchan && ircd->join2msg) {
+ /* XXX might desync */
+ ircdproto->SendJoin(findbot(s_GlobalNoticer), LogChannel, time(NULL));
+ }
}
+ serv_uplink = serv;
+ serv->flags |= SERVER_ISUPLINK;
}
return serv;