Added the ngx_http_upstream_param_set_slot().

This commit is contained in:
Valentin Bartenev 2011-12-09 13:19:57 +00:00
parent 59a2b77039
commit 50546b26d9
2 changed files with 53 additions and 0 deletions

View File

@ -4444,6 +4444,50 @@ ngx_http_upstream_bind_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
}
char *
ngx_http_upstream_param_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf)
{
char *p = conf;
ngx_str_t *value;
ngx_array_t **a;
ngx_http_upstream_param_t *param;
a = (ngx_array_t **) (p + cmd->offset);
if (*a == NULL) {
*a = ngx_array_create(cf->pool, 4, sizeof(ngx_http_upstream_param_t));
if (*a == NULL) {
return NGX_CONF_ERROR;
}
}
param = ngx_array_push(*a);
if (param == NULL) {
return NGX_CONF_ERROR;
}
value = cf->args->elts;
param->key = value[1];
param->value = value[2];
param->skip_empty = 0;
if (cf->args->nelts == 4) {
if (ngx_strcmp(value[3].data, "if_not_empty") != 0) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"invalid parameter \"%V\"", &value[3]);
return NGX_CONF_ERROR;
}
param->skip_empty = 1;
}
return NGX_CONF_OK;
}
ngx_int_t
ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf,
ngx_http_upstream_conf_t *conf, ngx_http_upstream_conf_t *prev,

View File

@ -328,6 +328,13 @@ typedef struct {
} ngx_http_upstream_next_t;
typedef struct {
ngx_str_t key;
ngx_str_t value;
ngx_uint_t skip_empty;
} ngx_http_upstream_param_t;
ngx_int_t ngx_http_upstream_header_variable(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data);
@ -337,6 +344,8 @@ ngx_http_upstream_srv_conf_t *ngx_http_upstream_add(ngx_conf_t *cf,
ngx_url_t *u, ngx_uint_t flags);
char *ngx_http_upstream_bind_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
char *ngx_http_upstream_param_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
ngx_int_t ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf,
ngx_http_upstream_conf_t *conf, ngx_http_upstream_conf_t *prev,
ngx_str_t *default_hide_headers, ngx_hash_init_t *hash);