Skip to content

Commit d5759e2

Browse files
committed
remove while loop
1 parent 52d6777 commit d5759e2

File tree

1 file changed

+37
-23
lines changed

1 file changed

+37
-23
lines changed

lib/resty/core/socket.lua

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -220,43 +220,57 @@ local function sslhandshake(cosocket, reused_session, server_name, ssl_verify,
220220
error("no request ctx found", 2)
221221
end
222222

223-
while true do
224-
if rc == FFI_ERROR then
225-
if openssl_error_code[0] ~= 0 then
226-
return nil, openssl_error_code[0] .. ": " .. ffi_str(errmsg[0])
227-
end
223+
if rc == FFI_ERROR then
224+
if openssl_error_code[0] ~= 0 then
225+
return nil, openssl_error_code[0] .. ": " .. ffi_str(errmsg[0])
226+
end
227+
228+
return nil, ffi_str(errmsg[0])
229+
end
228230

229-
return nil, ffi_str(errmsg[0])
231+
if rc == FFI_DONE then
232+
return reused_session
233+
end
234+
235+
if rc == FFI_OK then
236+
if reused_session == false then
237+
return true
230238
end
231239

232-
if rc == FFI_DONE then
233-
return reused_session
240+
rc = C.ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result(r, u,
241+
session_ptr, errmsg, openssl_error_code)
242+
243+
assert(rc == FFI_OK)
244+
245+
if session_ptr[0] == nil then
246+
return nil
234247
end
235248

236-
if rc == FFI_OK then
237-
if reused_session == false then
238-
return true
239-
end
249+
return ffi_gc(session_ptr[0], C.ngx_http_lua_ffi_ssl_free_session)
250+
end
240251

241-
rc = C.ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result(r, u,
242-
session_ptr, errmsg, openssl_error_code)
252+
assert(rc == FFI_AGAIN)
243253

244-
assert(rc == FFI_OK)
254+
co_yield()
245255

246-
if session_ptr[0] == nil then
247-
return nil
248-
end
256+
rc = C.ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result(r, u,
257+
session_ptr, errmsg, openssl_error_code)
249258

250-
return ffi_gc(session_ptr[0], C.ngx_http_lua_ffi_ssl_free_session)
259+
if rc == FFI_ERROR then
260+
if openssl_error_code[0] ~= 0 then
261+
return nil, openssl_error_code[0] .. ": " .. ffi_str(errmsg[0])
251262
end
252263

253-
assert(rc == FFI_AGAIN)
264+
return nil, ffi_str(errmsg[0])
265+
end
254266

255-
co_yield()
267+
assert(rc == FFI_OK)
256268

257-
rc = C.ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result(r, u,
258-
session_ptr, errmsg, openssl_error_code)
269+
if session_ptr[0] == nil then
270+
return nil
259271
end
272+
273+
return ffi_gc(session_ptr[0], C.ngx_http_lua_ffi_ssl_free_session)
260274
end
261275

262276

0 commit comments

Comments
 (0)