From 1de617e3550366076737e804f1e28891605db89c Mon Sep 17 00:00:00 2001 From: moteus Date: Wed, 29 May 2013 14:33:27 +0400 Subject: Add. Allow get `error` option to socket. --- src/options.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/options.c') diff --git a/src/options.c b/src/options.c index 6cae7ee..6f36ba4 100644 --- a/src/options.c +++ b/src/options.c @@ -254,6 +254,19 @@ static int opt_getboolean(lua_State *L, p_socket ps, int level, int name) return 1; } +int opt_get_error(lua_State *L, p_socket ps) +{ + int val = 0; + socklen_t len = sizeof(val); + if (getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *) &val, &len) < 0) { + lua_pushnil(L); + lua_pushstring(L, "getsockopt failed"); + return 2; + } + lua_pushstring(L, socket_strerror(val)); + return 1; +} + static int opt_setboolean(lua_State *L, p_socket ps, int level, int name) { int val = auxiliar_checkboolean(L, 3); /* obj, name, bool */ -- cgit v1.2.3-55-g6feb