diff --git a/samples/forward.lua b/samples/forward.lua index 0f79ee2..c213a59 100644 --- a/samples/forward.lua +++ b/samples/forward.lua @@ -77,11 +77,11 @@ print("trying to connect peer", who, host, port) if not ret and err == "timeout" then print("got timeout, will wait", who) wait(who, "output") - ret, err = who:connected() + ret, err = who:connect(host, port) print("connection results arrived", who, ret, err) end if not ret then -print("connection failed", who) +print("connection failed", who, err) kick(who) kick(context[who].peer) else diff --git a/src/tcp.c b/src/tcp.c index 3aa1538..e4b1375 100644 --- a/src/tcp.c +++ b/src/tcp.c @@ -20,7 +20,6 @@ \*=========================================================================*/ static int global_create(lua_State *L); static int meth_connect(lua_State *L); -static int meth_connected(lua_State *L); static int meth_listen(lua_State *L); static int meth_bind(lua_State *L); static int meth_send(lua_State *L); @@ -46,7 +45,6 @@ static luaL_reg tcp[] = { {"bind", meth_bind}, {"close", meth_close}, {"connect", meth_connect}, - {"connected", meth_connected}, {"dirty", meth_dirty}, {"getfd", meth_getfd}, {"getpeername", meth_getpeername}, @@ -226,25 +224,6 @@ static int meth_connect(lua_State *L) return 1; } -static int meth_connected(lua_State *L) -{ - p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{master}", 1); - int err; - t_tm tm; - tm_init(&tm, 0.1, -1); - tm_markstart(&tm); - err = sock_connected(&tcp->sock, &tm); - if (err != IO_DONE) { - lua_pushnil(L); - lua_pushstring(L, sock_strerror(err)); - return 2; - } - /* turn master object into a client object */ - aux_setclass(L, "tcp{client}", 1); - lua_pushnumber(L, 1); - return 1; -} - /*-------------------------------------------------------------------------*\ * Closes socket used by object \*-------------------------------------------------------------------------*/ @@ -308,7 +287,7 @@ error: \*-------------------------------------------------------------------------*/ static int meth_getpeername(lua_State *L) { - p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); + p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); return inet_meth_getpeername(L, &tcp->sock); } diff --git a/src/usocket.c b/src/usocket.c index 3e151bf..dcb40e6 100644 --- a/src/usocket.c +++ b/src/usocket.c @@ -358,6 +358,7 @@ const char *sock_strerror(int err) { if (err <= 0) return io_strerror(err); switch (err) { case EADDRINUSE: return "address already in use"; + case EISCONN: return "already connected"; case EACCES: return "permission denied"; case ECONNREFUSED: return "connection refused"; case ECONNABORTED: return "closed"; diff --git a/src/wsocket.c b/src/wsocket.c index 2c30fbb..2cbd073 100644 --- a/src/wsocket.c +++ b/src/wsocket.c @@ -332,6 +332,7 @@ const char *sock_strerror(int err) { switch (err) { case WSAEADDRINUSE: return "address already in use"; case WSAECONNREFUSED: return "connection refused"; + case WSAEISCONN: return "already connected"; case WSAEACCES: return "permission denied"; case WSAECONNABORTED: return "closed"; case WSAECONNRESET: return "closed";