diff --git a/lualib-src/ltls.c b/lualib-src/ltls.c index 8c50fdea..28488de0 100644 --- a/lualib-src/ltls.c +++ b/lualib-src/ltls.c @@ -219,14 +219,17 @@ _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); ERR_clear_error(); 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)) { + }else if(read == 0){ + break; + } + else if(read <= sizeof(outbuff)) { luaL_addlstring(&b, outbuff, read); }else { luaL_error(L, "invalid SSL_read:%d", read);