return NGX_ERROR;
}
+ ctx = ngx_http_get_module_ctx(r, ngx_http_image_filter_module);
+
+ if (ctx) {
+ ngx_http_set_ctx(r, NULL, ngx_http_image_filter_module);
+ return ngx_http_next_header_filter(r);
+ }
+
ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_image_filter_ctx_t));
if (ctx == NULL) {
return NGX_ERROR;
}
return ngx_http_filter_finalize_request(r,
+ &ngx_http_image_filter_module,
NGX_HTTP_UNSUPPORTED_MEDIA_TYPE);
}
if (rc == NGX_ERROR) {
return ngx_http_filter_finalize_request(r,
+ &ngx_http_image_filter_module,
NGX_HTTP_UNSUPPORTED_MEDIA_TYPE);
}
if (out.buf == NULL) {
return ngx_http_filter_finalize_request(r,
+ &ngx_http_image_filter_module,
NGX_HTTP_UNSUPPORTED_MEDIA_TYPE);
}
ctx->done = 1;
if (b == NULL) {
- return ngx_http_filter_finalize_request(r,
+ return ngx_http_filter_finalize_request(r, NULL,
NGX_HTTP_INTERNAL_SERVER_ERROR);
}
if (cln == NULL) {
ngx_free(b->pos);
- return ngx_http_filter_finalize_request(r,
+ return ngx_http_filter_finalize_request(r, NULL,
NGX_HTTP_INTERNAL_SERVER_ERROR);
}
ngx_int_t ngx_http_special_response_handler(ngx_http_request_t *r,
ngx_int_t error);
ngx_int_t ngx_http_filter_finalize_request(ngx_http_request_t *r,
- ngx_int_t error);
+ ngx_module_t *m, ngx_int_t error);
void ngx_http_clean_header(ngx_http_request_t *r);
ngx_int_t
-ngx_http_filter_finalize_request(ngx_http_request_t *r, ngx_int_t error)
+ngx_http_filter_finalize_request(ngx_http_request_t *r, ngx_module_t *m,
+ ngx_int_t error)
{
- ngx_int_t rc;
+ void *ctx;
+ ngx_int_t rc;
ngx_http_clean_header(r);
+ if (m) {
+ ctx = r->ctx[m->ctx_index];
+ }
+
/* clear the modules contexts */
ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
+ if (m) {
+ r->ctx[m->ctx_index] = ctx;
+ }
+
r->filter_finalize = 1;
rc = ngx_http_special_response_handler(r, error);