Hello!

We've noticed that the builtin resolver in Nginx cannot handle domain
names with a trailing dot (like "agentzh.org.") and just return the
error "Host not found". The following patch attempts a fix.

Thanks!
-agentzh

# HG changeset patch
# User Yichun Zhang <agen...@gmail.com>
# Date 1389209699 28800
# Node ID 3d10680c0399cb8d2e3b601412df0495ffaab4a5
# Parent  c0d6eae5a1c5d16cf6a9d6a3a73656972f838eab
Resolver: added support for domain names with a trailing dot.

diff -r c0d6eae5a1c5 -r 3d10680c0399 src/core/ngx_resolver.c
--- a/src/core/ngx_resolver.c   Fri Dec 13 20:49:52 2013 +0400
+++ b/src/core/ngx_resolver.c   Wed Jan 08 11:34:59 2014 -0800
@@ -467,6 +467,10 @@
     ngx_resolver_ctx_t   *next;
     ngx_resolver_node_t  *rn;

+    if (ctx->name.len > 0 && ctx->name.data[ctx->name.len - 1] == '.') {
+        ctx->name.len--;
+    }
+
     ngx_strlow(ctx->name.data, ctx->name.data, ctx->name.len);

     hash = ngx_crc32_short(ctx->name.data, ctx->name.len);
# HG changeset patch
# User Yichun Zhang <agen...@gmail.com>
# Date 1389209699 28800
# Node ID 3d10680c0399cb8d2e3b601412df0495ffaab4a5
# Parent  c0d6eae5a1c5d16cf6a9d6a3a73656972f838eab
Resolver: added support for domain names with a trailing dot.

diff -r c0d6eae5a1c5 -r 3d10680c0399 src/core/ngx_resolver.c
--- a/src/core/ngx_resolver.c	Fri Dec 13 20:49:52 2013 +0400
+++ b/src/core/ngx_resolver.c	Wed Jan 08 11:34:59 2014 -0800
@@ -467,6 +467,10 @@
     ngx_resolver_ctx_t   *next;
     ngx_resolver_node_t  *rn;
 
+    if (ctx->name.len > 0 && ctx->name.data[ctx->name.len - 1] == '.') {
+        ctx->name.len--;
+    }
+
     ngx_strlow(ctx->name.data, ctx->name.data, ctx->name.len);
 
     hash = ngx_crc32_short(ctx->name.data, ctx->name.len);
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to