Mercurial > prosody-hg
comparison net/server_event.lua @ 9473:5fdda751333a
net.server: Require IP address as argument to addclient (no DNS names)
The net.connect API should be used to resolve DNS names first
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 11 Oct 2018 15:48:30 +0200 |
| parents | 33e52f727f0f |
| children | 89e05b118f6e |
comparison
equal
deleted
inserted
replaced
| 9472:ea40fe484c38 | 9473:5fdda751333a |
|---|---|
| 48 local coroutine_yield = coroutine.yield | 48 local coroutine_yield = coroutine.yield |
| 49 | 49 |
| 50 local has_luasec, ssl = pcall ( require , "ssl" ) | 50 local has_luasec, ssl = pcall ( require , "ssl" ) |
| 51 local socket = require "socket" | 51 local socket = require "socket" |
| 52 local levent = require "luaevent.core" | 52 local levent = require "luaevent.core" |
| 53 local inet = require "util.net"; | |
| 54 local inet_pton = inet.pton; | |
| 53 | 55 |
| 54 local socket_gettime = socket.gettime | 56 local socket_gettime = socket.gettime |
| 55 local getaddrinfo = socket.dns.getaddrinfo | |
| 56 | 57 |
| 57 local log = require ("util.logger").init("socket") | 58 local log = require ("util.logger").init("socket") |
| 58 | 59 |
| 59 local function debug(...) | 60 local function debug(...) |
| 60 return log("debug", ("%s "):rep(select('#', ...)), ...) | 61 return log("debug", ("%s "):rep(select('#', ...)), ...) |
| 726 if sslctx and not has_luasec then | 727 if sslctx and not has_luasec then |
| 727 debug "need luasec, but not available" | 728 debug "need luasec, but not available" |
| 728 return nil, "luasec not found" | 729 return nil, "luasec not found" |
| 729 end | 730 end |
| 730 if not typ then | 731 if not typ then |
| 731 local addrinfo, err = getaddrinfo(addr) | 732 local n = inet_pton(addr); |
| 732 if not addrinfo then return nil, err end | 733 if not n then return nil, "invalid-ip"; end |
| 733 if addrinfo[1] and addrinfo[1].family == "inet6" then | 734 if #n == 16 then |
| 734 typ = "tcp6" | 735 typ = "tcp6"; |
| 735 else | 736 elseif #n == 4 then |
| 736 typ = "tcp" | 737 typ = "tcp4"; |
| 737 end | 738 end |
| 738 end | 739 end |
| 739 local create = socket[typ] | 740 local create = socket[typ] or socket.tcp; |
| 740 if type( create ) ~= "function" then | 741 if type( create ) ~= "function" then |
| 741 return nil, "invalid socket type" | 742 return nil, "invalid socket type" |
| 742 end | 743 end |
| 743 local client, err = create() -- creating new socket | 744 local client, err = create() -- creating new socket |
| 744 if not client then | 745 if not client then |
