diff --git a/src/lua/bsdsocket.lua b/src/lua/bsdsocket.lua index 63b4cd6f40bc2d093e8a695c5200f1262c117728..6b660b5a58ba748077321cac20d08e5a9872b9ef 100644 --- a/src/lua/bsdsocket.lua +++ b/src/lua/bsdsocket.lua @@ -761,12 +761,17 @@ local function create_socket(domain, stype, proto) return nil end - local p = ffi.C.getprotobyname(proto) - if p == nil then - boxerrno(boxerrno.EINVAL) - return nil + local iproto + if type(proto) == 'string' then + local p = ffi.C.getprotobyname(proto) + if p == nil then + boxerrno(boxerrno.EINVAL) + return nil + end + iproto = p.p_proto + else + iproto = tonumber(proto) end - local iproto = p.p_proto local fh = ffi.C.socket(idomain, itype, iproto) if fh < 0 then @@ -903,7 +908,7 @@ end local function tcp_connect(host, port, timeout) if host == 'unix/' then - return tcp_connect_remote({ host = host, port = port, protocol = 'ip', + return tcp_connect_remote({ host = host, port = port, protocol = 0, family = 'PF_UNIX', type = 'SOCK_STREAM' }, timeout) end local timeout = timeout or TIMEOUT_INFINITY diff --git a/src/lua/console.lua b/src/lua/console.lua index 106413aafdfcf7ea06620d6f0ecc7aab8acfd101..f0fac9a60feb53fa4f569f0526b77e5cee055ae0 100644 --- a/src/lua/console.lua +++ b/src/lua/console.lua @@ -5,6 +5,7 @@ local formatter = require('yaml') local fiber = require('fiber') local socket = require('socket') local log = require('log') +local errno = require('errno') local function format(status, ...) -- When storing a nil in a Lua table, there is no way to @@ -268,14 +269,15 @@ local function listen(uri) if host == 'unix/' then port = port or '/tmp/tarantool-console.sock' os.remove(port) - server = socket('AF_UNIX', 'SOCK_STREAM', 'ip') + server = socket('AF_UNIX', 'SOCK_STREAM', 0) else host = host or '127.0.0.1' port = port or 3313 server = socket('AF_INET', 'SOCK_STREAM', 'tcp') end if not server then - error('failed to create socket: ' .. server:error()) + error(string.format('failed to create socket %s%s : %s', + host, port, errno.strerror())) end server:setsockopt('SOL_SOCKET', 'SO_REUSEADDR', true) diff --git a/test/box/bsdsocket.test.lua b/test/box/bsdsocket.test.lua index 4e301dcaed9961a00401dc560599125f6b783a75..5bd72354b5afb7c1789d98ddb6a9e4986c838910 100644 --- a/test/box/bsdsocket.test.lua +++ b/test/box/bsdsocket.test.lua @@ -141,7 +141,7 @@ sa:read(100, 1) sa:close() sc:close() -s = socket('PF_UNIX', 'SOCK_STREAM', 'ip') +s = socket('PF_UNIX', 'SOCK_STREAM', 0) s:setsockopt('SOL_SOCKET', 'SO_REUSEADDR', true) s ~= nil s:nonblock() @@ -152,7 +152,7 @@ s:bind('unix/', '/tmp/tarantool-test-socket') sc ~= nil s:listen(1234) -sc = socket('PF_UNIX', 'SOCK_STREAM', 'ip') +sc = socket('PF_UNIX', 'SOCK_STREAM', 0) sc:nonblock(true) sc:sysconnect('unix/', '/tmp/tarantool-test-socket') sc:error() @@ -272,7 +272,7 @@ socket.tcp_connect('127.0.0.1', porrt), errno() == errno.ECONNREFUSED -- AF_UNIX path = '/tmp/tarantool-test-socket' -s = socket('AF_UNIX', 'SOCK_STREAM', 'ip') +s = socket('AF_UNIX', 'SOCK_STREAM', 0) s:bind('unix/', path) socket.tcp_connect('unix/', path), errno() == errno.ECONNREFUSED s:listen() @@ -338,7 +338,7 @@ f = nil path = '/tmp/tarantool-test-socket' -s = socket('PF_UNIX', 'SOCK_STREAM', 'ip') +s = socket('PF_UNIX', 'SOCK_STREAM', 0) s:setsockopt('SOL_SOCKET', 'SO_REUSEADDR', true) s:error() s:bind('unix/', path)