@@ -228,49 +228,40 @@ local function sslhandshake(cosocket, reused_session, server_name, ssl_verify,
228228 return reused_session
229229 end
230230
231- if rc == FFI_OK then
232- if reused_session == false then
233- return true
234- end
235-
236- rc = C .ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result (r , u ,
237- session_ptr , errmsg , openssl_error_code )
238-
239- assert (rc == FFI_OK )
240-
241- goto reused_sess
231+ if rc == FFI_OK and reused_session == false then
232+ return true
242233 end
243234
244- assert (rc == FFI_AGAIN )
235+ if rc == FFI_AGAIN then
236+ co_yield ()
237+ end
245238
246- co_yield ()
239+ -- (rc == FFI_OK and reused_session ~= false) or co_yield()
247240
248241 rc = C .ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result (r , u ,
249- session_ptr , errmsg , openssl_error_code )
242+ session_ptr , errmsg , openssl_error_code )
250243
251- :: failed::
244+ if rc == FFI_OK then
245+ if reused_session == false then
246+ return true
247+ end
252248
253- if rc == FFI_ERROR then
254- if openssl_error_code [0 ] ~= 0 then
255- return nil , openssl_error_code [0 ] .. " : " .. ffi_str (errmsg [0 ])
249+ if session_ptr [0 ] == nil then
250+ return nil
256251 end
257252
258- return nil , ffi_str ( errmsg [0 ])
253+ return ffi_gc ( session_ptr [0 ], C . ngx_http_lua_ffi_ssl_free_session )
259254 end
260255
261- assert (rc == FFI_OK )
262-
263- if reused_session == false then
264- return true
265- end
256+ :: failed::
266257
267- :: reused_sess ::
258+ assert ( rc == FFI_ERROR )
268259
269- if session_ptr [0 ] == nil then
270- return nil
260+ if openssl_error_code [0 ] ~= 0 then
261+ return nil , openssl_error_code [ 0 ] .. " : " .. ffi_str ( errmsg [ 0 ])
271262 end
272263
273- return ffi_gc ( session_ptr [0 ], C . ngx_http_lua_ffi_ssl_free_session )
264+ return nil , ffi_str ( errmsg [0 ])
274265end
275266
276267
0 commit comments