summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua')
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua51
1 files changed, 32 insertions, 19 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
index 211adcd1d98..e8def759f47 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
@@ -1,7 +1,6 @@
-----------------------------------------------------------------------------
-- LuaSocket helper module
-- Author: Diego Nehab
--- RCS ID: $Id: socket.lua,v 1.22 2005/11/22 08:33:29 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -16,27 +15,41 @@ module("socket")
-----------------------------------------------------------------------------
-- Exported auxiliar functions
-----------------------------------------------------------------------------
-function connect(address, port, laddress, lport)
- local sock, err = socket.tcp()
- if not sock then return nil, err end
- if laddress then
- local res, err = sock:bind(laddress, lport, -1)
- if not res then return nil, err end
- end
- local res, err = sock:connect(address, port)
- if not res then return nil, err end
- return sock
+function connect4(address, port, laddress, lport)
+ return socket.connect(address, port, laddress, lport, "inet")
+end
+
+function connect6(address, port, laddress, lport)
+ return socket.connect(address, port, laddress, lport, "inet6")
end
function bind(host, port, backlog)
- local sock, err = socket.tcp()
- if not sock then return nil, err end
- sock:setoption("reuseaddr", true)
- local res, err = sock:bind(host, port)
- if not res then return nil, err end
- res, err = sock:listen(backlog)
- if not res then return nil, err end
- return sock
+ if host == "*" then host = "0.0.0.0" end
+ local addrinfo, err = socket.dns.getaddrinfo(host);
+ if not addrinfo then return nil, err end
+ local sock, res
+ err = "no info on address"
+ for i, alt in base.ipairs(addrinfo) do
+ if alt.family == "inet" then
+ sock, err = socket.tcp()
+ else
+ sock, err = socket.tcp6()
+ end
+ if not sock then return nil, err end
+ sock:setoption("reuseaddr", true)
+ res, err = sock:bind(alt.addr, port)
+ if not res then
+ sock:close()
+ else
+ res, err = sock:listen(backlog)
+ if not res then
+ sock:close()
+ else
+ return sock
+ end
+ end
+ end
+ return nil, err
end
try = newtry()