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)