X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=libs%2Fnixio%2Fsrc%2Ftls-socket.c;h=fe4cb60755c8eb2749d65116028997833ea6c098;hb=a2b916ab736802050b19562b7c163e3f3bb1566f;hp=0f504ccbbea90a8265661ddf922a21a9f665e217;hpb=4aa848533e40db16a00d5dd106bcc05621e3f949;p=project%2Fluci.git diff --git a/libs/nixio/src/tls-socket.c b/libs/nixio/src/tls-socket.c index 0f504ccbb..fe4cb6075 100644 --- a/libs/nixio/src/tls-socket.c +++ b/libs/nixio/src/tls-socket.c @@ -1,4 +1,4 @@ -/* + /* * nixio - Linux I/O library for lua * * Copyright (C) 2009 Steven Barth @@ -65,7 +65,7 @@ static SSL* nixio__checktlssock(lua_State *L) { static int nixio_tls_sock_recv(lua_State *L) { SSL *sock = nixio__checktlssock(L); nixio_tls__check_connected(L); - int req = luaL_checkinteger(L, 2); + uint req = luaL_checkinteger(L, 2); luaL_argcheck(L, req >= 0, 2, "out of range"); @@ -172,6 +172,24 @@ static int nixio_tls_sock_send(lua_State *L) { size_t len; ssize_t sent; const char *data = luaL_checklstring(L, 2, &len); + + if (lua_gettop(L) > 2) { + int offset = luaL_optint(L, 3, 0); + if (offset) { + if (offset < len) { + data += offset; + len -= offset; + } else { + len = 0; + } + } + + unsigned int wlen = luaL_optint(L, 4, len); + if (wlen < len) { + len = wlen; + } + } + sent = SSL_write(sock, data, len); if (sent > 0) { lua_pushinteger(L, sent);