ST(0) = TARG;
+void
+sleep(r, sleep, next)
+ CODE:
+
+ dXSTARG;
+ ngx_http_request_t *r;
+ ngx_http_perl_ctx_t *ctx;
+
+ ngx_http_perl_set_request(r);
+
+ ctx = ngx_http_get_module_ctx(r, ngx_http_perl_module);
+
+ ctx->sleep = SvIV(ST(1));
+ ctx->next = SvRV(ST(2));
+
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "perl sleep: %d", ctx->sleep);
+
+ XSRETURN_EMPTY;
+
+
void
log_error(r, err, msg)
CODE:
ngx_http_ssi_ctx_t *ssi_ctx, ngx_str_t **params);
#endif
+static void ngx_http_perl_sleep_handler(ngx_http_request_t *r);
static char *ngx_http_perl_init_interpreter(ngx_conf_t *cf,
ngx_http_perl_main_conf_t *pmcf);
static PerlInterpreter *
ctx->filename.data = NULL;
ctx->redirect_uri.len = 0;
+ if (ctx->sleep) {
+ ngx_add_timer(r->connection->write, (ngx_msec_t) ctx->sleep);
+ r->write_event_handler = ngx_http_perl_sleep_handler;
+ ctx->sleep = 0;
+ }
+
if (ctx->done || ctx->next) {
return;
}
}
+static void
+ngx_http_perl_sleep_handler(ngx_http_request_t *r)
+{
+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "perl sleep handler");
+
+ ngx_http_perl_handle_request(r);
+}
+
+
static ngx_int_t
ngx_http_perl_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
uintptr_t data)