diff --git a/src/lua/bsdsocket.lua b/src/lua/bsdsocket.lua index 3259a5921bc5240b4586afa749e5b2e19e9d2a5b..3b65bc04137cb3f88591bd588ceae8fba1c939e6 100644 --- a/src/lua/bsdsocket.lua +++ b/src/lua/bsdsocket.lua @@ -77,9 +77,9 @@ local socket_mt local function bless_socket(fd) -- Make socket to be non-blocked by default if ffi.C.bsdsocket_nonblock(fd, 1) < 0 then - local errno = box.errno() + local errno = boxerrno() ffi.C.close(fd) - box.errno(errno) + boxerrno(errno) return nil end @@ -508,7 +508,7 @@ socket_methods.accept = function(self) local cfd, from = internal.accept(fd) if cfd == nil then - self._errno = box.errno() + self._errno = boxerrno() return nil end return bless_socket(cfd), from @@ -952,6 +952,11 @@ local function tcp_connect(host, port, timeout) if dns == nil then return nil end + + if #dns == 0 then + boxerrno(boxerrno.EINVAL) + return nil + end for i, remote in pairs(dns) do timeout = stop - fiber.time() if timeout <= 0 then diff --git a/test/box/bsdsocket.result b/test/box/bsdsocket.result index e59baf99d259b3e51bfd1b508028aa22a7d525d2..b2122b38bd5b489c9c19d317676ca476041fd71d 100644 --- a/test/box/bsdsocket.result +++ b/test/box/bsdsocket.result @@ -1475,3 +1475,8 @@ fio.stat(path) == nil --- - true ... +{ socket.tcp_connect('abrakadabra#123') == nil, errno.strerror() } +--- +- - true + - Invalid argument +... diff --git a/test/box/bsdsocket.test.lua b/test/box/bsdsocket.test.lua index 9081ad5a352d20d485bb9013481f03448d9476e1..8fc124573ef7a22ad677a899eef160ccb1f812e0 100644 --- a/test/box/bsdsocket.test.lua +++ b/test/box/bsdsocket.test.lua @@ -497,3 +497,5 @@ s = socket.tcp_server('unix/', path, function() end) s ~= nil s:close() fio.stat(path) == nil + +{ socket.tcp_connect('abrakadabra#123') == nil, errno.strerror() }