sock,err create(bind_host, bind_port) sock,err create(bind_host) -> any port sock,err create() -> any port on localhost
| 201 | // sock,err create(bind_host) -> any port |
| 202 | // sock,err create() -> any port on localhost |
| 203 | static int l_socket_create(lua_State *L) { |
| 204 | const char *err; |
| 205 | t_socket sock; |
| 206 | const char *addr = lua_tostring(L, 1); |
| 207 | if (!addr) { |
| 208 | addr = DEFAULT_HOST; |
| 209 | } |
| 210 | unsigned short port = lua_tonumber(L, 2); |
| 211 | err = tcp_create(&sock); |
| 212 | if (!err) { |
| 213 | err = tcp_bind(&sock, addr, port); // bind on create |
| 214 | if (err) { |
| 215 | tcp_destroy(&sock); |
| 216 | } else { |
| 217 | p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); |
| 218 | settype(L, -2, SOCKET_GENERIC); |
| 219 | socket_setnonblocking(&sock); |
| 220 | tcp->sock = sock; |
| 221 | tcp->timeout = 0; |
| 222 | return 1; // Return userdata |
| 223 | } |
| 224 | } |
| 225 | LUA_CHECK_RETURN(L, err); |
| 226 | } |
| 227 | |
| 228 | // destroy() |
| 229 | static int l_socket_destroy(lua_State *L) { |
nothing calls this directly
no test coverage detected