From 194940822e92bb3037509459727f251016091147 Mon Sep 17 00:00:00 2001 From: zixun Date: Wed, 22 May 2019 12:12:57 +0800 Subject: [PATCH] fix SSL_read and SSL_write return 0 --- lualib-src/ltls.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lualib-src/ltls.c b/lualib-src/ltls.c index 4c1275ab..aff3b9f2 100644 --- a/lualib-src/ltls.c +++ b/lualib-src/ltls.c @@ -215,16 +215,16 @@ _ltls_context_read(lua_State* L) { do { read = SSL_read(tls_p->ssl, outbuff, sizeof(outbuff)); - if(read < 0) { + if(read <= 0) { int err = SSL_get_error(tls_p->ssl, read); if(err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) { break; } luaL_error(L, "SSL_read error:%d", err); - }else if(read > sizeof(outbuff)) { - luaL_error(L, "invalid SSL_read"); - }else if (read > 0) { + }else if(read <= sizeof(outbuff)) { luaL_addlstring(&b, outbuff, read); + }else { + luaL_error(L, "invalid SSL_read"); } }while(true); luaL_pushresult(&b); @@ -238,16 +238,16 @@ _ltls_context_write(lua_State* L) { size_t slen = 0; char* unencrypted_data = (char*)lua_tolstring(L, 2, &slen); - while(slen >0) { + while(slen > 0) { int written = SSL_write(tls_p->ssl, unencrypted_data, slen); - if(written < 0) { + if(written <= 0) { int err = SSL_get_error(tls_p->ssl, written); luaL_error(L, "SSL_write error:%d", err); - }else if(written > slen) { - luaL_error(L, "invalid SSL_write"); - }else if(written>0) { + }else if(written <= slen) { unencrypted_data += written; slen -= written; + }else { + luaL_error(L, "invalid SSL_write"); } }