From b49efe577caa7b9f1d6cbac0d801421e1478646b Mon Sep 17 00:00:00 2001 From: Simon Arlott Date: Sat, 23 Apr 2016 17:30:59 +0100 Subject: [PATCH] mr_server: Handle unknown error codes As mr_server is a module, it could potentially receive an unknown error code from check_server(). --- modules/core/m_server.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/core/m_server.c b/modules/core/m_server.c index 3f16888aa..f4e922bbe 100644 --- a/modules/core/m_server.c +++ b/modules/core/m_server.c @@ -77,6 +77,7 @@ mr_server(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc int hop; unsigned int required_mask; const char *missing; + int ret; name = parv[1]; hop = atoi(parv[2]); @@ -112,8 +113,12 @@ mr_server(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc /* Now we just have to call check_server and everything should be * check for us... -A1kmm. */ - switch (check_server(name, client_p)) + ret = check_server(name, client_p); + switch (ret) { + case 0: + /* success */ + break; case -1: if(ConfigFileEntry.warn_no_nline) { @@ -183,6 +188,16 @@ mr_server(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc exit_client(client_p, client_p, client_p, "Access denied, requires SSL/TLS but is plaintext"); return; + default: + sendto_realops_snomask(SNO_GENERAL, L_ALL, + "Connection from servername %s rejected, unknown error %d", + name, ret); + ilog(L_SERVER, "Access denied, unknown error %d for server %s%s", ret, + EmptyString(client_p->name) ? name : "", + log_client_name(client_p, SHOW_IP)); + + exit_client(client_p, client_p, client_p, "Unknown error."); + return; } /* require TS6 for direct links */