1818
1919static int ngx_http_lua_ngx_exec (lua_State * L );
2020static int ngx_http_lua_ngx_redirect (lua_State * L );
21- static int ngx_http_lua_ngx_exit (lua_State * L );
2221static int ngx_http_lua_on_abort (lua_State * L );
2322
2423
@@ -35,14 +34,6 @@ ngx_http_lua_inject_control_api(ngx_log_t *log, lua_State *L)
3534 lua_pushcfunction (L , ngx_http_lua_ngx_exec );
3635 lua_setfield (L , -2 , "exec" );
3736
38- lua_pushcfunction (L , ngx_http_lua_ngx_exit );
39- lua_setfield (L , -2 , "throw_error" ); /* deprecated */
40-
41- /* ngx.exit */
42-
43- lua_pushcfunction (L , ngx_http_lua_ngx_exit );
44- lua_setfield (L , -2 , "exit" );
45-
4637 /* ngx.on_abort */
4738
4839 lua_pushcfunction (L , ngx_http_lua_on_abort );
@@ -297,108 +288,6 @@ ngx_http_lua_ngx_redirect(lua_State *L)
297288}
298289
299290
300- static int
301- ngx_http_lua_ngx_exit (lua_State * L )
302- {
303- ngx_int_t rc ;
304- ngx_http_request_t * r ;
305- ngx_http_lua_ctx_t * ctx ;
306-
307- if (lua_gettop (L ) != 1 ) {
308- return luaL_error (L , "expecting one argument" );
309- }
310-
311- r = ngx_http_lua_get_req (L );
312- if (r == NULL ) {
313- return luaL_error (L , "no request object found" );
314- }
315-
316- ctx = ngx_http_get_module_ctx (r , ngx_http_lua_module );
317- if (ctx == NULL ) {
318- return luaL_error (L , "no request ctx found" );
319- }
320-
321- ngx_http_lua_check_context (L , ctx , NGX_HTTP_LUA_CONTEXT_REWRITE
322- | NGX_HTTP_LUA_CONTEXT_ACCESS
323- | NGX_HTTP_LUA_CONTEXT_CONTENT
324- | NGX_HTTP_LUA_CONTEXT_TIMER
325- | NGX_HTTP_LUA_CONTEXT_HEADER_FILTER
326- | NGX_HTTP_LUA_CONTEXT_BALANCER
327- | NGX_HTTP_LUA_CONTEXT_SSL_CERT
328- | NGX_HTTP_LUA_CONTEXT_SSL_SESS_STORE
329- | NGX_HTTP_LUA_CONTEXT_SSL_SESS_FETCH );
330-
331- rc = (ngx_int_t ) luaL_checkinteger (L , 1 );
332-
333- if (ctx -> context & (NGX_HTTP_LUA_CONTEXT_SSL_CERT
334- | NGX_HTTP_LUA_CONTEXT_SSL_SESS_STORE
335- | NGX_HTTP_LUA_CONTEXT_SSL_SESS_FETCH ))
336- {
337-
338- #if (NGX_HTTP_SSL )
339-
340- ctx -> exit_code = rc ;
341- ctx -> exited = 1 ;
342-
343- ngx_log_debug1 (NGX_LOG_DEBUG_HTTP , r -> connection -> log , 0 ,
344- "lua exit with code %i" , rc );
345-
346- if (ctx -> context == NGX_HTTP_LUA_CONTEXT_SSL_SESS_STORE ) {
347- return 0 ;
348- }
349-
350- return lua_yield (L , 0 );
351-
352- #else
353-
354- return luaL_error (L , "no SSL support" );
355-
356- #endif
357- }
358-
359- if (ctx -> no_abort
360- && rc != NGX_ERROR
361- && rc != NGX_HTTP_CLOSE
362- && rc != NGX_HTTP_REQUEST_TIME_OUT
363- && rc != NGX_HTTP_CLIENT_CLOSED_REQUEST )
364- {
365- return luaL_error (L , "attempt to abort with pending subrequests" );
366- }
367-
368- if ((r -> header_sent || ctx -> header_sent )
369- && rc >= NGX_HTTP_SPECIAL_RESPONSE
370- && rc != NGX_HTTP_REQUEST_TIME_OUT
371- && rc != NGX_HTTP_CLIENT_CLOSED_REQUEST
372- && rc != NGX_HTTP_CLOSE )
373- {
374- if (rc != (ngx_int_t ) r -> headers_out .status ) {
375- ngx_log_error (NGX_LOG_ERR , r -> connection -> log , 0 , "attempt to "
376- "set status %i via ngx.exit after sending out the "
377- "response status %ui" , rc , r -> headers_out .status );
378- }
379-
380- rc = NGX_HTTP_OK ;
381- }
382-
383- dd ("setting exit code: %d" , (int ) rc );
384-
385- ctx -> exit_code = rc ;
386- ctx -> exited = 1 ;
387-
388- ngx_log_debug1 (NGX_LOG_DEBUG_HTTP , r -> connection -> log , 0 ,
389- "lua exit with code %i" , ctx -> exit_code );
390-
391- if (ctx -> context & (NGX_HTTP_LUA_CONTEXT_HEADER_FILTER
392- | NGX_HTTP_LUA_CONTEXT_BALANCER ))
393- {
394- return 0 ;
395- }
396-
397- dd ("calling yield" );
398- return lua_yield (L , 0 );
399- }
400-
401-
402291static int
403292ngx_http_lua_on_abort (lua_State * L )
404293{
@@ -457,7 +346,6 @@ ngx_http_lua_on_abort(lua_State *L)
457346}
458347
459348
460- #ifndef NGX_LUA_NO_FFI_API
461349int
462350ngx_http_lua_ffi_exit (ngx_http_request_t * r , int status , u_char * err ,
463351 size_t * errlen )
@@ -553,6 +441,6 @@ ngx_http_lua_ffi_exit(ngx_http_request_t *r, int status, u_char *err,
553441
554442 return NGX_OK ;
555443}
556- #endif /* NGX_LUA_NO_FFI_API */
444+
557445
558446/* vi:set ft=c ts=4 sw=4 et fdm=marker: */
0 commit comments