aboutsummaryrefslogtreecommitdiffstats
path: root/util/prosodyctl
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2024-12-20 14:21:02 +0000
committerMatthew Wild <mwild1@gmail.com>2024-12-20 14:21:02 +0000
commitbca60e609d6a5433acaedafbe3b9cc3fd6661ff1 (patch)
tree7d3be3c30ce3ef3b0fc54b5107d0525b78d07ec0 /util/prosodyctl
parent48b271450d86bd0730045cf1c34ff72caab18e26 (diff)
downloadprosody-bca60e609d6a5433acaedafbe3b9cc3fd6661ff1.tar.gz
prosody-bca60e609d6a5433acaedafbe3b9cc3fd6661ff1.zip
util.prosodyctl.check: Improve error handling of UDP socket setup (for #1803)origin/0.120.12
Not necessarily a fix, but may give us more information about failure cases.
Diffstat (limited to 'util/prosodyctl')
-rw-r--r--util/prosodyctl/check.lua18
1 files changed, 14 insertions, 4 deletions
diff --git a/util/prosodyctl/check.lua b/util/prosodyctl/check.lua
index 9d460158..43406f0c 100644
--- a/util/prosodyctl/check.lua
+++ b/util/prosodyctl/check.lua
@@ -70,10 +70,22 @@ local function check_turn_service(turn_service, ping_service)
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 @@ local function check_turn_service(turn_service, ping_service)
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");