Changeset

13580:836efad8483c 0.12 0.12.5

util.prosodyctl.check: Improve error handling of UDP socket setup (for #1803) Not necessarily a fix, but may give us more information about failure cases.
author Matthew Wild <mwild1@gmail.com>
date Fri, 20 Dec 2024 14:21:02 +0000
parents 13559:eedae7d47784
children 13581:c71feb7686c0 13636:1ef39ce837be
files util/prosodyctl/check.lua
diffstat 1 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/util/prosodyctl/check.lua	Fri Nov 15 14:36:41 2024 +0000
+++ b/util/prosodyctl/check.lua	Fri Dec 20 14:21:02 2024 +0000
@@ -70,10 +70,22 @@
 	local ip = require "util.ip";
 	local stun = require "net.stun";
 
+	local result = { warnings = {} };
+
 	-- Create UDP socket for communication with the server
 	local sock = assert(require "socket".udp());
-	sock:setsockname("*", 0);
-	sock:setpeername(turn_service.host, turn_service.port);
+	do
+		local ok, err = sock:setsockname("*", 0);
+		if not ok then
+			result.error = "Unable to perform TURN test: setsockname: "..tostring(err);
+			return result;
+		end
+		ok, err = sock:setpeername(turn_service.host, turn_service.port);
+		if not ok then
+			result.error = "Unable to perform TURN test: setpeername: "..tostring(err);
+			return result;
+		end
+	end
 	sock:settimeout(10);
 
 	-- Helper function to receive a packet
@@ -85,8 +97,6 @@
 		return stun.new_packet():deserialize(raw_packet);
 	end
 
-	local result = { warnings = {} };
-
 	-- Send a "binding" query, i.e. a request for our external IP/port
 	local bind_query = stun.new_packet("binding", "request");
 	bind_query:add_attribute("software", "prosodyctl check turn");