]> git.kaiwu.me - nginx.git/commitdiff
replace inet_addr() with ngx_inet_addr()
authorIgor Sysoev <igor@sysoev.ru>
Mon, 2 Nov 2009 13:51:10 +0000 (13:51 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 2 Nov 2009 13:51:10 +0000 (13:51 +0000)
src/core/ngx_inet.c
src/http/modules/ngx_http_realip_module.c
src/mail/ngx_mail_auth_http_module.c

index c6f36fe9cbd45fa604c83d523eaf9073f8a8c219..326383b8f1e877dfb76b1f633d1c9696f4f3a77d 100644 (file)
@@ -643,20 +643,21 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u)
         return NGX_OK;
     }
 
-    if (len++) {
+    if (len) {
+        sin->sin_addr.s_addr = ngx_inet_addr(host, len);
 
-        p = ngx_alloc(len, pool->log);
-        if (p == NULL) {
-            return NGX_ERROR;
-        }
-
-        (void) ngx_cpystrn(p, host, len);
+        if (sin->sin_addr.s_addr == INADDR_NONE) {
+            p = ngx_alloc(++len, pool->log);
+            if (p == NULL) {
+                return NGX_ERROR;
+            }
 
-        sin->sin_addr.s_addr = inet_addr((const char *) p);
+            (void) ngx_cpystrn(p, host, len);
 
-        if (sin->sin_addr.s_addr == INADDR_NONE) {
             h = gethostbyname((const char *) p);
 
+            ngx_free(p);
+
             if (h == NULL || h->h_addr_list[0] == NULL) {
                 ngx_free(p);
                 u->err = "host not found";
@@ -670,8 +671,6 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u)
             u->wildcard = 1;
         }
 
-        ngx_free(p);
-
     } else {
         sin->sin_addr.s_addr = INADDR_ANY;
         u->wildcard = 1;
@@ -815,20 +814,20 @@ ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u)
     struct hostent      *h;
     struct sockaddr_in  *sin;
 
-    host = ngx_alloc(u->host.len + 1, pool->log);
-    if (host == NULL) {
-        return NGX_ERROR;
-    }
-
-    (void) ngx_cpystrn(host, u->host.data, u->host.len + 1);
-
     /* AF_INET only */
 
     port = htons(u->port);
 
-    in_addr = inet_addr((char *) host);
+    in_addr = ngx_inet_addr(u->host.data, u->host.len);
 
     if (in_addr == INADDR_NONE) {
+        host = ngx_alloc(u->host.len + 1, pool->log);
+        if (host == NULL) {
+            return NGX_ERROR;
+        }
+
+        (void) ngx_cpystrn(host, u->host.data, u->host.len + 1);
+
         h = gethostbyname((char *) host);
 
         ngx_free(host);
@@ -883,8 +882,6 @@ ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u)
 
     } else {
 
-        ngx_free(host);
-
         /* MP: ngx_shared_palloc() */
 
         u->addrs = ngx_pcalloc(pool, sizeof(ngx_peer_addr_t));
index 3b2cce679814955624575a78127ce2e06e225b96..927893bbb292f96f547c5fd88ce427490cb3d9b0 100644 (file)
@@ -226,7 +226,7 @@ found:
 
             ngx_http_set_ctx(r, ctx, ngx_http_realip_module);
 
-            addr = inet_addr((char *) ip);
+            addr = ngx_inet_addr(ip, len);
 
             if (addr == INADDR_NONE) {
                 return NGX_DECLINED;
index acd06656f4ef72a63cfad0a6519cb8cc2a26e4f7..a27b116028732b5e9083c42056ed8b282780796d 100644 (file)
@@ -795,8 +795,7 @@ ngx_mail_auth_http_process_headers(ngx_mail_session_t *s,
 
             sin->sin_port = htons((in_port_t) port);
 
-            ctx->addr.data[ctx->addr.len] = '\0';
-            sin->sin_addr.s_addr = inet_addr((char *) ctx->addr.data);
+            sin->sin_addr.s_addr = ngx_inet_addr(ctx->addr.data, ctx->addr.len);
             if (sin->sin_addr.s_addr == INADDR_NONE) {
                 ngx_log_error(NGX_LOG_ERR, s->connection->log, 0,
                               "auth http server %V sent invalid server "