diff --git a/src/lua/bsdsocket.lua b/src/lua/bsdsocket.lua index 2d60b5fa14c31c47fae8a472b71b2e1c1bac68d9..c6eb61f02f915fa71fc66f2ad78bcef7f58f1389 100644 --- a/src/lua/bsdsocket.lua +++ b/src/lua/bsdsocket.lua @@ -966,6 +966,11 @@ local function tcp_connect(host, port, timeout) if dns == nil then return nil end + + if #dns == 0 then + box.errno(box.errno.EINVAL) + return nil + end for i, remote in pairs(dns) do timeout = stop - box.time() if timeout <= 0 then diff --git a/test/box/bsdsocket.result b/test/box/bsdsocket.result index cf0e390627d7ba97602fea7de4ba474b62837352..144966a65f22feefc86b80caedd52d2ae9b5f03f 100644 --- a/test/box/bsdsocket.result +++ b/test/box/bsdsocket.result @@ -1183,3 +1183,7 @@ lua s:close() --- - true ... +lua box.cjson.encode{ box.socket.tcp_connect('test:test@localhost:3303') == nil, box.errno.strerror() } +--- + - [true,"Invalid argument"] +... diff --git a/test/box/bsdsocket.test b/test/box/bsdsocket.test index 0399c86939d262ee90f8f0f05f1cb20525bc7a5a..194f7e5edf76023e56dc546bc1bb997ac99ed433 100644 --- a/test/box/bsdsocket.test +++ b/test/box/bsdsocket.test @@ -385,3 +385,6 @@ exec admin "lua s ~= nil" exec admin "lua s:close()" if os.path.exists(path): print 'unix socket was not removed: test failed' + + +exec admin "lua box.cjson.encode{ box.socket.tcp_connect('test:test@localhost:3303') == nil, box.errno.strerror() }"