From 1fd30de6a32a89eacf67bd7204c49193ec43c102 Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 31 Jan 2014 12:31:32 +0000 Subject: - m_server.c:mr_server(): don't falsely exit a server with the reason being "SID already exists" if it's just hash_find_server() that returned non-NULL. git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/branches/8.1.x@2977 82007160-df01-0410-b94d-b575c5fd34c7 --- modules/core/m_server.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/core/m_server.c b/modules/core/m_server.c index 340492e..b7c71b9 100644 --- a/modules/core/m_server.c +++ b/modules/core/m_server.c @@ -178,8 +178,7 @@ mr_server(struct Client *client_p, struct Client *source_p, break; } - if ((client_p->id[0] && (target_p = hash_find_id(client_p->id))) - || (target_p = hash_find_server(name))) + if ((target_p = hash_find_server(name))) { /* This link is trying feed me a server that I already have * access through another path -- multiple paths not accepted @@ -191,6 +190,19 @@ mr_server(struct Client *client_p, struct Client *source_p, * Definitely don't do that here. This is from an unregistered * connect - A1kmm. */ + sendto_realops_flags(UMODE_ALL, L_ADMIN, SEND_NOTICE, + "Attempt to re-introduce server %s from %s", + name, get_client_name(client_p, HIDE_IP)); + sendto_realops_flags(UMODE_ALL, L_OPER, SEND_NOTICE, + "Attempt to re-introduce server %s from %s", + name, get_client_name(client_p, MASK_IP)); + sendto_one(client_p, "ERROR :Server already exists."); + exit_client(client_p, client_p, "Server already exists"); + return 0; + } + + if ((client_p->id[0] && (target_p = hash_find_id(client_p->id)))) + { sendto_realops_flags(UMODE_ALL, L_ADMIN, SEND_NOTICE, "Attempt to re-introduce server %s SID %s from %s", name, client_p->id, @@ -200,7 +212,7 @@ mr_server(struct Client *client_p, struct Client *source_p, name, client_p->id, get_client_name(client_p, MASK_IP)); sendto_one(client_p, "ERROR :Server ID already exists."); - exit_client(client_p, client_p, "Server ID Exists"); + exit_client(client_p, client_p, "Server ID already exists"); return 0; } -- cgit