diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2021-05-25 15:17:45 +0300 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2021-05-25 15:17:45 +0300 |
commit | d1f51296bc175a897742572dc0be824a94df3f5a (patch) | |
tree | 97316721edc626a87e9b9be89b564b79705538b0 | |
parent | 52601fc5dcb7532d2ee6d9edcf02b7828b425d7e (diff) | |
download | nginx-d1f51296bc175a897742572dc0be824a94df3f5a.tar.gz nginx-d1f51296bc175a897742572dc0be824a94df3f5a.zip |
Resolver: simplified ngx_resolver_copy().
Instead of checking on each label if we need to place a dot or not,
now it always adds a dot after a label, and reduces the resulting
length afterwards.
-rw-r--r-- | src/core/ngx_resolver.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c index 0d7fd7915..9ce53b930 100644 --- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -3939,11 +3939,11 @@ ngx_resolver_copy(ngx_resolver_t *r, ngx_str_t *name, u_char *buf, u_char *src, { char *err; u_char *p, *dst; - ssize_t len; + size_t len; ngx_uint_t i, n; p = src; - len = -1; + len = 0; /* * compression pointers allow to create endless loop, so we set limit; @@ -3996,7 +3996,7 @@ done: return NGX_OK; } - if (len == -1) { + if (len == 0) { ngx_str_null(name); return NGX_OK; } @@ -4012,7 +4012,7 @@ done: n = *src++; if (n == 0) { - name->len = dst - name->data; + name->len = dst - name->data - 1; return NGX_OK; } @@ -4021,13 +4021,10 @@ done: src = &buf[n]; } else { - if (dst != name->data) { - *dst++ = '.'; - } - ngx_strlow(dst, src, n); dst += n; src += n; + *dst++ = '.'; } } } |