Skip to content

Commit f68dc90

Browse files
committed
revert while logic, just like ngx.pipe
1 parent 0e95917 commit f68dc90

File tree

1 file changed

+25
-31
lines changed

1 file changed

+25
-31
lines changed

lib/resty/core/socket.lua

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

223-
if rc == FFI_ERROR then
224-
goto failed
225-
end
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
226228

227-
if rc == FFI_DONE then
228-
return reused_session
229-
end
229+
return nil, ffi_str(errmsg[0])
230+
end
230231

231-
if rc == FFI_OK and reused_session == false then
232-
return true
233-
end
232+
if rc == FFI_DONE then
233+
return reused_session
234+
end
234235

235-
if rc == FFI_AGAIN then
236-
co_yield()
237-
end
236+
if rc == FFI_OK then
237+
if reused_session == false then
238+
return true
239+
end
238240

239-
-- (rc == FFI_OK and reused_session ~= false) or
240-
-- (rc == FFI_AGAIN and reused_session == cdata/false then co_yield)
241+
rc = C.ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result(r, u,
242+
session_ptr, errmsg, openssl_error_code)
241243

242-
rc = C.ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result(r, u,
243-
session_ptr, errmsg, openssl_error_code)
244+
assert(rc == FFI_OK)
244245

245-
if rc == FFI_OK then
246-
if reused_session == false then
247-
return true
248-
end
246+
if session_ptr[0] == nil then
247+
return session_ptr[0]
248+
end
249249

250-
if session_ptr[0] == nil then
251-
return session_ptr[0]
250+
return ffi_gc(session_ptr[0], C.ngx_http_lua_ffi_ssl_free_session)
252251
end
253252

254-
return ffi_gc(session_ptr[0], C.ngx_http_lua_ffi_ssl_free_session)
255-
end
256-
257-
::failed::
253+
assert(rc == FFI_AGAIN)
258254

259-
assert(rc == FFI_ERROR)
255+
co_yield()
260256

261-
if openssl_error_code[0] ~= 0 then
262-
return nil, openssl_error_code[0] .. ": " .. ffi_str(errmsg[0])
257+
rc = C.ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result(r, u,
258+
session_ptr, errmsg, openssl_error_code)
263259
end
264-
265-
return nil, ffi_str(errmsg[0])
266260
end
267261

268262

0 commit comments

Comments
 (0)