diff options
author | Igor Sysoev <igor@sysoev.ru> | 2009-11-02 16:11:06 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2009-11-02 16:11:06 +0000 |
commit | 8b816d88a93bf98e0557ef4568e5ee9ab6f44bd3 (patch) | |
tree | efbd320ffa1cfa5bd0c37526baaa80b5939d535d /src/http/ngx_http_upstream.c | |
parent | 72e928755ba63b803c0b2478f6d8d1e792e95b86 (diff) | |
download | nginx-8b816d88a93bf98e0557ef4568e5ee9ab6f44bd3.tar.gz nginx-8b816d88a93bf98e0557ef4568e5ee9ab6f44bd3.zip |
change ngx_parse_addr() interface
Diffstat (limited to 'src/http/ngx_http_upstream.c')
-rw-r--r-- | src/http/ngx_http_upstream.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c index a04aad323..b82bfa97b 100644 --- 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_t *cf, ngx_command_t *cmd, { char *p = conf; + ngx_int_t rc; ngx_str_t *value; ngx_addr_t **paddr; paddr = (ngx_addr_t **) (p + cmd->offset); + *paddr = ngx_palloc(cf->pool, sizeof(ngx_addr_t)); + if (*paddr == NULL) { + return NGX_CONF_ERROR; + } + value = cf->args->elts; - *paddr = ngx_parse_addr(cf->pool, &value[1]); - if (*paddr) { - return NGX_CONF_OK; - } + rc = ngx_parse_addr(cf->pool, *paddr, value[1].data, value[1].len); - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "invalid address \"%V\"", &value[1]); + switch (rc) { + case NGX_OK: + (*paddr)->name = value[1]; + return NGX_CONF_OK; - return NGX_CONF_ERROR; + case NGX_DECLINED: + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "invalid address \"%V\"", &value[1]); + default: + return NGX_CONF_ERROR; + } } |