From 08ae67de87b0adf975480c40a48b06a01c720d34 Mon Sep 17 00:00:00 2001 From: Randy Sommerfeld <cyan@synchro.net> Date: Mon, 3 Jan 2022 08:12:58 +0700 Subject: [PATCH] Handle null or timed out DNS replies properly --- exec/load/ircd/unregistered.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/exec/load/ircd/unregistered.js b/exec/load/ircd/unregistered.js index 08cf95e8c3..f9c40be5c1 100644 --- a/exec/load/ircd/unregistered.js +++ b/exec/load/ircd/unregistered.js @@ -96,14 +96,14 @@ function Unregistered_Client(id,socket) { log(LOG_DEBUG,format("[UNREG] WARNING: Received extraneous RDNS reply.")); return false; } - log(LOG_DEBUG,format("[UNREG] Received RDNS reply: %s", resp[0])); - if (resp[0] === undefined) { + if ((resp === undefined) || (resp === null) || (resp[0] === undefined)) { /* Fall through */ } else if (resp[0].search(/[.]/) == -1 || resp[0].search(/[.]local$/i) > -1) { + log(LOG_DEBUG,format("[UNREG] Local network detected, using servername."); this.hostname = ServerName; } else { this.hostname = resp[0]; - log(LOG_DEBUG,format("[UNREG] Resolving hostname: %s", resp[0])); + log(LOG_DEBUG,format("[UNREG] Resolving RDNS reply: %s", resp[0])); if (this.socket.family == PF_INET6) { DNS_Resolver.resolveIPv6(resp[0], this.forward_resolver, this); } else { @@ -124,9 +124,14 @@ function Unregistered_Client(id,socket) { log(LOG_DEBUG,format("[UNREG] WARNING: Received extraneous DNS reply.")); return false; } - log(LOG_DEBUG,format("[UNREG] Received DNS reply: %s", resp[0])); - if ((resp[0] === undefined) || (resp[0] != this.ip)) { + if ((resp === undefined) || (resp === null)) { + log(LOG_DEBUG,format("[UNREG] DNS reply timed out."); this.hostname = this.ip; + } else { + log(LOG_DEBUG,format("[UNREG] Received DNS reply: %s", resp[0])); + if ((resp[0] === undefined) || (resp[0] != this.ip)) { + this.hostname = this.ip; + } } this.dns_pending = false; this.Unregistered_Check_User_Registration(); -- GitLab