Allow the complex value to be defined as an empty string.

This makes conversion from strings to complex values possible
without the loss of functionality.
This commit is contained in:
Ruslan Ermilov 2012-12-06 23:03:53 +00:00
parent 161822f728
commit ee7305607c
8 changed files with 14 additions and 18 deletions

View file

@ -117,7 +117,7 @@ ngx_http_auth_basic_handler(ngx_http_request_t *r)
alcf = ngx_http_get_module_loc_conf(r, ngx_http_auth_basic_module); alcf = ngx_http_get_module_loc_conf(r, ngx_http_auth_basic_module);
if (alcf->realm.len == 0 || alcf->user_file.value.len == 0) { if (alcf->realm.len == 0 || alcf->user_file.value.data == NULL) {
return NGX_DECLINED; return NGX_DECLINED;
} }
@ -390,7 +390,7 @@ ngx_http_auth_basic_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
conf->realm = prev->realm; conf->realm = prev->realm;
} }
if (conf->user_file.value.len == 0) { if (conf->user_file.value.data == NULL) {
conf->user_file = prev->user_file; conf->user_file = prev->user_file;
} }
@ -456,7 +456,7 @@ ngx_http_auth_basic_user_file(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_str_t *value; ngx_str_t *value;
ngx_http_compile_complex_value_t ccv; ngx_http_compile_complex_value_t ccv;
if (alcf->user_file.value.len) { if (alcf->user_file.value.data) {
return "is duplicate"; return "is duplicate";
} }

View file

@ -3014,7 +3014,7 @@ ngx_http_fastcgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
value = cf->args->elts; value = cf->args->elts;
if (flcf->cache_key.value.len) { if (flcf->cache_key.value.data) {
return "is duplicate"; return "is duplicate";
} }

View file

@ -837,7 +837,7 @@ ngx_http_proxy_create_key(ngx_http_request_t *r)
return NGX_ERROR; return NGX_ERROR;
} }
if (plcf->cache_key.value.len) { if (plcf->cache_key.value.data) {
if (ngx_http_complex_value(r, &plcf->cache_key, key) != NGX_OK) { if (ngx_http_complex_value(r, &plcf->cache_key, key) != NGX_OK) {
return NGX_ERROR; return NGX_ERROR;
@ -3651,7 +3651,7 @@ ngx_http_proxy_cache_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
value = cf->args->elts; value = cf->args->elts;
if (plcf->cache_key.value.len) { if (plcf->cache_key.value.data) {
return "is duplicate"; return "is duplicate";
} }

View file

@ -1771,7 +1771,7 @@ ngx_http_scgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
value = cf->args->elts; value = cf->args->elts;
if (scf->cache_key.value.len) { if (scf->cache_key.value.data) {
return "is duplicate"; return "is duplicate";
} }

View file

@ -628,7 +628,7 @@ ngx_http_sub_filter(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_str_t *value; ngx_str_t *value;
ngx_http_compile_complex_value_t ccv; ngx_http_compile_complex_value_t ccv;
if (slcf->match.len) { if (slcf->match.data) {
return "is duplicate"; return "is duplicate";
} }
@ -688,7 +688,7 @@ ngx_http_sub_merge_conf(ngx_conf_t *cf, void *parent, void *child)
ngx_conf_merge_value(conf->once, prev->once, 1); ngx_conf_merge_value(conf->once, prev->once, 1);
ngx_conf_merge_str_value(conf->match, prev->match, ""); ngx_conf_merge_str_value(conf->match, prev->match, "");
if (conf->value.value.len == 0) { if (conf->value.value.data == NULL) {
conf->value = prev->value; conf->value = prev->value;
} }

View file

@ -1807,7 +1807,7 @@ ngx_http_uwsgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
value = cf->args->elts; value = cf->args->elts;
if (uwcf->cache_key.value.len) { if (uwcf->cache_key.value.data) {
return "is duplicate"; return "is duplicate";
} }

View file

@ -4593,7 +4593,7 @@ ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_str_null(&args); ngx_str_null(&args);
if (cv.lengths == NULL && uri.data[0] == '/') { if (cv.lengths == NULL && uri.len && uri.data[0] == '/') {
p = (u_char *) ngx_strchr(uri.data, '?'); p = (u_char *) ngx_strchr(uri.data, '?');
if (p) { if (p) {

View file

@ -114,11 +114,6 @@ ngx_http_compile_complex_value(ngx_http_compile_complex_value_t *ccv)
v = ccv->value; v = ccv->value;
if (v->len == 0) {
ngx_conf_log_error(NGX_LOG_EMERG, ccv->cf, 0, "empty parameter");
return NGX_ERROR;
}
nv = 0; nv = 0;
nc = 0; nc = 0;
@ -133,8 +128,9 @@ ngx_http_compile_complex_value(ngx_http_compile_complex_value_t *ccv)
} }
} }
if (v->data[0] != '$' && (ccv->conf_prefix || ccv->root_prefix)) { if ((v->len == 0 || v->data[0] != '$')
&& (ccv->conf_prefix || ccv->root_prefix))
{
if (ngx_conf_full_name(ccv->cf->cycle, v, ccv->conf_prefix) != NGX_OK) { if (ngx_conf_full_name(ccv->cf->cycle, v, ccv->conf_prefix) != NGX_OK) {
return NGX_ERROR; return NGX_ERROR;
} }