1356
1359
ngx_conf_merge_uint_value(conf->modifier1, prev->modifier1, 0);
1357
1360
ngx_conf_merge_uint_value(conf->modifier2, prev->modifier2, 0);
1362
if (ngx_http_uwsgi_merge_params(cf, conf, prev) != NGX_OK) {
1363
return NGX_CONF_ERROR;
1371
ngx_http_uwsgi_merge_params(ngx_conf_t *cf, ngx_http_uwsgi_loc_conf_t *conf,
1372
ngx_http_uwsgi_loc_conf_t *prev)
1378
ngx_array_t headers_names;
1379
#if (NGX_HTTP_CACHE)
1380
ngx_array_t params_merged;
1384
ngx_hash_init_t hash;
1385
ngx_http_script_compile_t sc;
1386
ngx_http_script_copy_code_t *copy;
1359
1388
if (conf->params_source == NULL) {
1360
conf->flushes = prev->flushes;
1361
conf->params_len = prev->params_len;
1362
conf->params = prev->params;
1363
1389
conf->params_source = prev->params_source;
1364
conf->headers_hash = prev->headers_hash;
1366
#if (NGX_HTTP_CACHE)
1368
if (conf->params_source == NULL) {
1370
if ((conf->upstream.cache == NULL)
1371
== (prev->upstream.cache == NULL))
1376
/* 6 is a number of ngx_http_uwsgi_cache_headers entries */
1377
conf->params_source = ngx_array_create(cf->pool, 6,
1378
sizeof(ngx_keyval_t));
1379
if (conf->params_source == NULL) {
1380
return NGX_CONF_ERROR;
1385
if (conf->params_source == NULL) {
1391
if (prev->headers_hash.buckets
1392
#if (NGX_HTTP_CACHE)
1393
&& ((conf->upstream.cache == NULL) == (prev->upstream.cache == NULL))
1397
conf->flushes = prev->flushes;
1398
conf->params_len = prev->params_len;
1399
conf->params = prev->params;
1400
conf->headers_hash = prev->headers_hash;
1401
conf->header_params = prev->header_params;
1407
if (conf->params_source == NULL
1408
#if (NGX_HTTP_CACHE)
1409
&& (conf->upstream.cache == NULL)
1413
conf->headers_hash.buckets = (void *) 1;
1392
1417
conf->params_len = ngx_array_create(cf->pool, 64, 1);
1393
1418
if (conf->params_len == NULL) {
1394
return NGX_CONF_ERROR;
1397
1422
conf->params = ngx_array_create(cf->pool, 512, 1);
1398
1423
if (conf->params == NULL) {
1399
return NGX_CONF_ERROR;
1402
1427
if (ngx_array_init(&headers_names, cf->temp_pool, 4, sizeof(ngx_hash_key_t))
1405
return NGX_CONF_ERROR;
1408
src = conf->params_source->elts;
1433
if (conf->params_source) {
1434
src = conf->params_source->elts;
1435
nsrc = conf->params_source->nelts;
1410
1442
#if (NGX_HTTP_CACHE)
1412
1444
if (conf->upstream.cache) {
1413
1445
ngx_keyval_t *h, *s;
1415
for (h = ngx_http_uwsgi_cache_headers; h->key.len; h++) {
1417
for (i = 0; i < conf->params_source->nelts; i++) {
1447
if (ngx_array_init(¶ms_merged, cf->temp_pool, 4, sizeof(ngx_keyval_t))
1453
for (i = 0; i < nsrc; i++) {
1455
s = ngx_array_push(¶ms_merged);
1463
h = ngx_http_uwsgi_cache_headers;
1465
while (h->key.len) {
1467
src = params_merged.elts;
1468
nsrc = params_merged.nelts;
1470
for (i = 0; i < nsrc; i++) {
1418
1471
if (ngx_strcasecmp(h->key.data, src[i].key.data) == 0) {
1423
s = ngx_array_push(conf->params_source);
1476
s = ngx_array_push(¶ms_merged);
1424
1477
if (s == NULL) {
1425
return NGX_CONF_ERROR;
1430
src = conf->params_source->elts;
1488
src = params_merged.elts;
1489
nsrc = params_merged.nelts;
1440
for (i = 0; i < conf->params_source->nelts; i++) {
1494
for (i = 0; i < nsrc; i++) {
1442
1496
if (src[i].key.len > sizeof("HTTP_") - 1
1443
1497
&& ngx_strncmp(src[i].key.data, "HTTP_", sizeof("HTTP_") - 1) == 0)
1445
1499
hk = ngx_array_push(&headers_names);
1446
1500
if (hk == NULL) {
1447
return NGX_CONF_ERROR;
1450
1504
hk->key.len = src[i].key.len - 5;