From 83a4c76a3462f15894a67888952cd6f7c73f0b18 Mon Sep 17 00:00:00 2001 From: Sergey Maslov Date: Wed, 22 May 2024 07:38:28 +0200 Subject: [PATCH] Fix compilation issues with nginx 1.23 and later Based on patch provided in: https://github.com/masterzen/nginx-upload-progress-module/issues/56#issuecomment-1165886072 Fixes: #56 Co-authored-by: Sergey Maslov Co-authored-by: Vadim A. Misbakh-Soloviov Co-authored-by: Benny Baumann Signed-off-by: Vadim A. Misbakh-Soloviov Signed-off-by: Benny Baumann --- ngx_http_uploadprogress_module.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/ngx_http_uploadprogress_module.c b/ngx_http_uploadprogress_module.c index 33bdaf7..42598ab 100644 --- a/ngx_http_uploadprogress_module.c +++ b/ngx_http_uploadprogress_module.c @@ -559,12 +559,12 @@ ngx_http_reportuploads_handler(ngx_http_request_t * r) ngx_chain_t out; ngx_int_t rc, found=0, done=0, err_status=0; off_t rest=0, length=0; - ngx_uint_t len, i; + ngx_uint_t len; ngx_slab_pool_t *shpool; ngx_http_uploadprogress_conf_t *upcf; ngx_http_uploadprogress_ctx_t *ctx; ngx_http_uploadprogress_node_t *up; - ngx_table_elt_t *expires, *cc, **ccp; + ngx_table_elt_t *expires, *cc; ngx_http_uploadprogress_state_t state; ngx_http_uploadprogress_template_t *t; @@ -637,6 +637,7 @@ ngx_http_reportuploads_handler(ngx_http_request_t * r) } r->headers_out.expires = expires; + expires->next = NULL; expires->hash = 1; expires->key.len = sizeof("Expires") - 1; @@ -646,37 +647,30 @@ ngx_http_reportuploads_handler(ngx_http_request_t * r) len = sizeof("Mon, 28 Sep 1970 06:00:00 GMT"); expires->value.len = len - 1; - ccp = r->headers_out.cache_control.elts; - if (ccp == NULL) { + cc = r->headers_out.cache_control; - if (ngx_array_init(&r->headers_out.cache_control, r->pool, - 1, sizeof(ngx_table_elt_t *)) - != NGX_OK) { - return NGX_HTTP_INTERNAL_SERVER_ERROR; - } - - ccp = ngx_array_push(&r->headers_out.cache_control); - if (ccp == NULL) { - return NGX_HTTP_INTERNAL_SERVER_ERROR; - } + if (cc == NULL) { cc = ngx_list_push(&r->headers_out.headers); if (cc == NULL) { + expires->hash = 0; return NGX_HTTP_INTERNAL_SERVER_ERROR; } + r->headers_out.cache_control = cc; + cc->next = NULL; + cc->hash = 1; cc->key.len = sizeof("Cache-Control") - 1; cc->key.data = (u_char *) "Cache-Control"; - *ccp = cc; - } else { - for (i = 1; i < r->headers_out.cache_control.nelts; i++) { - ccp[i]->hash = 0; + for (cc = cc->next; cc; cc = cc->next) { + cc->hash = 0; } - cc = ccp[0]; + cc = r->headers_out.cache_control; + cc->next = NULL; } expires->value.data = (u_char *) "Thu, 01 Jan 1970 00:00:01 GMT";