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;
+    }
 }