From 5d5315c9eccfb74ec8fc9c222cc170875c6b23e5 Mon Sep 17 00:00:00 2001
From: Alexander Olofsson <alexander.olofsson@liu.se>
Date: Fri, 23 Jul 2021 09:21:01 +0200
Subject: [PATCH] Improve WDS server IP detection

---
 app/models/wds_server.rb | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/app/models/wds_server.rb b/app/models/wds_server.rb
index 3371c77..835735f 100644
--- a/app/models/wds_server.rb
+++ b/app/models/wds_server.rb
@@ -111,8 +111,11 @@ class WdsServer < ApplicationRecord
   end
 
   def next_server_ip
-    Resolv.getaddresses(URI(url).host).select { |str| IPAddr.new(str).ipv4? }.first
-  rescue Resolv::ResolvError => e
+    res = Resolv::DNS.open { |dns| dns.getaddresses(URI(url).host) }.select { |addr| addr.is_a? Resolv::IPv4 }.first
+    return res.to_s if res
+
+    IPSocket.getaddress URI(url).host
+  rescue StandardError => e
     ::Rails.logger.info "Failed to look up IP of WDS server #{name}. #{e.class}: #{e}"
     nil
   end
-- 
GitLab