]> git.kaiwu.me - nginx.git/commitdiff
fix "PTR ." case in address resolver
authorIgor Sysoev <igor@sysoev.ru>
Mon, 9 Nov 2009 18:04:05 +0000 (18:04 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 9 Nov 2009 18:04:05 +0000 (18:04 +0000)
src/core/ngx_resolver.c
src/mail/ngx_mail_smtp_handler.c

index 82785c276043344ceb76d1a59acfaf7c6a3e99e1..775f17fa1e7220c70c41e6d453855df96bc0327f 100644 (file)
@@ -1902,6 +1902,12 @@ done:
         return NGX_OK;
     }
 
+    if (len == -1) {
+        name->len = 0;
+        name->data = NULL;
+        return NGX_OK;
+    }
+
     dst = ngx_resolver_alloc(r, len);
     if (dst == NULL) {
         return NGX_ERROR;
index 5d9be14847048b7a74c776cbf4044fb2ca7a21ed..12e4b5711fc2a53a89f839ac4e4ab7e3f2d0d8cf 100644 (file)
@@ -124,6 +124,19 @@ ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx)
         return;
     }
 
+    if (ctx->name.len == 0) {
+        ngx_log_error(NGX_LOG_ERR, c->log, 0,
+                      "%V has been resolved to zero name", &c->addr_text);
+
+        s->host = smtp_unavailable;
+
+        ngx_resolve_addr_done(ctx);
+
+        ngx_mail_smtp_greeting(s, s->connection);
+
+        return;
+    }
+
     c->log->action = "in resolving client hostname";
 
     s->host.data = ngx_pstrdup(c->pool, &ctx->name);