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() }