aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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");