Mercurial > hg > nginx
diff src/http/ngx_http_upstream.c @ 3272:98f49b2bcae8
change ngx_parse_addr() interface
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 02 Nov 2009 16:11:06 +0000 |
parents | fcd98af88df3 |
children | 479468a7d982 |
line wrap: on
line diff
--- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -4204,22 +4204,32 @@ ngx_http_upsteam_bind_set_slot(ngx_conf_ { char *p = conf; + ngx_int_t rc; ngx_str_t *value; ngx_addr_t **paddr; paddr = (ngx_addr_t **) (p + cmd->offset); - value = cf->args->elts; - - *paddr = ngx_parse_addr(cf->pool, &value[1]); - if (*paddr) { - return NGX_CONF_OK; + *paddr = ngx_palloc(cf->pool, sizeof(ngx_addr_t)); + if (*paddr == NULL) { + return NGX_CONF_ERROR; } - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "invalid address \"%V\"", &value[1]); - - return NGX_CONF_ERROR; + value = cf->args->elts; + + rc = ngx_parse_addr(cf->pool, *paddr, value[1].data, value[1].len); + + switch (rc) { + case NGX_OK: + (*paddr)->name = value[1]; + return NGX_CONF_OK; + + case NGX_DECLINED: + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "invalid address \"%V\"", &value[1]); + default: + return NGX_CONF_ERROR; + } }