Есть некоторое кол-во фаз обработки запроса. В каждый хендлер на любой из фаз я получаю от API только ngx_http_request_t. Хендлеры, естественно, вызываю не я — этим занимается сам nginx.
Я хочу в первом своём хендлере определить кое-какие значения и протащить это всё в следующие хендлеры.
Типа:
typedef struct {
ngx_uint_t x;
} foobar_t;
ngx_int_t
ngx_xxx_preaccess_phase_handler(ngx_http_request_t *request)
{
foobar_t *foobar;
foobar = ngx_palloc(request->pool, sizeof(foobar_t));
foobar->x = 0;
// и как теперь это передать дальше в контексте этого же реквеста?
}
.......
ngx_int_t
ngx_xxx_access_phase_handler(ngx_http_request_t *request)
{
// получили доступ к foobar в контексте этого реквеста
}
ngx_int_t
ngx_xxx_request_phase_handler(ngx_http_request_t *request)
{
// получили доступ к foobar в контексте этого реквеста
}
Но как прикрепиться именно к этому запросу? Иначе определять эти значения придётся в каждом из хендлеров.
Способ прикрепить это к самому реквесту я не нашёл. Способ выдрать из пула то что выделялось для чего-то конкретного я не нашёл.
Плохо искал?