@@ -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 )
260274end
261275
262276
0 commit comments