You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2014/03/03 15:37:35 UTC
[1/4] git commit: TS-2595 Skip domain expansion if original name ends
with dot.
Repository: trafficserver
Updated Branches:
refs/heads/master af3e7aa87 -> b74425c05
TS-2595 Skip domain expansion if original name ends with dot.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/7405d002
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/7405d002
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/7405d002
Branch: refs/heads/master
Commit: 7405d0025e176e8dbb31f9f9c8d7f3d0a78ccc37
Parents: dfdc985
Author: Thach Tran <tr...@gmail.com>
Authored: Sun Mar 2 15:38:00 2014 +0700
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Mon Mar 3 14:36:28 2014 +0000
----------------------------------------------------------------------
iocore/dns/DNS.cc | 61 ++++++++++++++++++++++----------------------------
1 file changed, 27 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7405d002/iocore/dns/DNS.cc
----------------------------------------------------------------------
diff --git a/iocore/dns/DNS.cc b/iocore/dns/DNS.cc
index 5f857be..4ddf05f 100644
--- a/iocore/dns/DNS.cc
+++ b/iocore/dns/DNS.cc
@@ -1043,14 +1043,20 @@ DNSEntry::mainEvent(int event, Event *e)
SET_HANDLER((DNSEntryHandler) & DNSEntry::delayEvent);
return handleEvent(event, e);
}
- //if (dns_search && !strnchr(qname,'.',MAXDNAME)){
- if (dns_search)
+
+ // trailing '.' indicates no domain expansion
+ if (dns_search && ('.' != qname[orig_qname_len - 1])) {
domains = dnsH->m_res->dnsrch;
- if (domains && !strnchr(qname, '.', MAXDNAME)) {
- qname[orig_qname_len] = '.';
- ink_strlcpy(qname + orig_qname_len + 1, *domains, MAXDNAME - (orig_qname_len + 1));
- qname_len = strlen(qname);
- ++domains;
+ // start domain expansion straight away
+ // if lookup name has no '.'
+ if (domains && !strnchr(qname, '.', MAXDNAME)) {
+ qname[orig_qname_len] = '.';
+ qname_len = orig_qname_len + 1 + ink_strlcpy(qname + orig_qname_len + 1, *domains,
+ MAXDNAME - (orig_qname_len + 1));
+ ++domains;
+ }
+ } else {
+ domains = NULL;
}
Debug("dns", "enqueing query %s", qname);
DNSEntry *dup = get_entry(dnsH, qname, qtype);
@@ -1123,36 +1129,23 @@ dns_result(DNSHandler *h, DNSEntry *e, HostEnt *ent, bool retry) {
} else if (e->domains && *e->domains) {
do {
Debug("dns", "domain extending, last tried '%s', original '%.*s'", e->qname, e->orig_qname_len, e->qname);
- //int l = _strlen(e->qname);
- char *dot = strchr(e->qname, '.');
- if (dot) {
- if (e->orig_qname_len + strlen(*e->domains) + 2 > MAXDNAME) {
- Debug("dns", "domain too large %.*s + %s", e->orig_qname_len, e->qname, *e->domains);
- goto LnextDomain;
- }
- if (e->qname[e->orig_qname_len - 1] != '.') {
- e->qname[e->orig_qname_len] = '.';
- ink_strlcpy(e->qname + e->orig_qname_len + 1, *e->domains, MAXDNAME - (e->orig_qname_len + 1));
- e->qname_len = strlen(e->qname);
- } else {
- ink_strlcpy(e->qname + e->orig_qname_len, *e->domains, MAXDNAME - e->orig_qname_len);
- e->qname_len = strlen(e->qname);
- }
+
+ // Make sure the next try fits
+ if (e->orig_qname_len + strlen(*e->domains) + 2 > MAXDNAME) {
+ Debug("dns", "domain too large %.*s + %s", e->orig_qname_len, e->qname, *e->domains);
} else {
- if (e->orig_qname_len + strlen(*e->domains) + 2 > MAXDNAME) {
- Debug("dns", "domain too large %.*s + %s", e->orig_qname_len, e->qname, *e->domains);
- goto LnextDomain;
- }
e->qname[e->orig_qname_len] = '.';
- ink_strlcpy(e->qname + e->orig_qname_len + 1, *e->domains, MAXDNAME - (e->orig_qname_len + 1));
- e->qname_len = strlen(e->qname);
+ e->qname_len = e->orig_qname_len + 1 + ink_strlcpy(e->qname + e->orig_qname_len + 1, *e->domains,
+ MAXDNAME - (e->orig_qname_len + 1));
+ ++(e->domains);
+ e->retries = dns_retries;
+ Debug("dns", "new name = %s retries = %d", e->qname, e->retries);
+ write_dns(h);
+
+ return;
}
- ++(e->domains);
- e->retries = dns_retries;
- Debug("dns", "new name = %s retries = %d", e->qname, e->retries);
- write_dns(h);
- return;
- LnextDomain:
+
+ // Try another one
++(e->domains);
} while (*e->domains);
} else {
[2/4] git commit: TS-2595 DNS lookup failed with multiple search
domains
Posted by zw...@apache.org.
TS-2595 DNS lookup failed with multiple search domains
Expand multiple search domains by appending each to original host name rather
than keep appending one after the other.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/dfdc9854
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/dfdc9854
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/dfdc9854
Branch: refs/heads/master
Commit: dfdc98548bcbd92df1c998afd8239a4a4f7ccc75
Parents: af3e7aa
Author: Thach Tran <tr...@gmail.com>
Authored: Thu Feb 27 16:27:48 2014 +0700
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Mon Mar 3 14:36:28 2014 +0000
----------------------------------------------------------------------
iocore/dns/DNS.cc | 28 +++++++++++++++-------------
iocore/dns/P_DNSProcessor.h | 6 ++++--
2 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/dfdc9854/iocore/dns/DNS.cc
----------------------------------------------------------------------
diff --git a/iocore/dns/DNS.cc b/iocore/dns/DNS.cc
index 74d972e..5f857be 100644
--- a/iocore/dns/DNS.cc
+++ b/iocore/dns/DNS.cc
@@ -385,10 +385,12 @@ DNSEntry::init(const char *x, int len, int qtype_arg, Continuation* acont,
len = len > (MAXDNAME - 1) ? (MAXDNAME - 1) : len;
memcpy(qname, x, len);
qname_len = len;
+ orig_qname_len = qname_len;
qname[len] = 0;
} else {
ink_strlcpy(qname, x, MAXDNAME);
qname_len = strlen(qname);
+ orig_qname_len = qname_len;
}
} else { //T_PTR
IpAddr const* ip = reinterpret_cast<IpAddr const*>(x);
@@ -1045,8 +1047,8 @@ DNSEntry::mainEvent(int event, Event *e)
if (dns_search)
domains = dnsH->m_res->dnsrch;
if (domains && !strnchr(qname, '.', MAXDNAME)) {
- qname[qname_len] = '.';
- ink_strlcpy(qname + qname_len + 1, *domains, MAXDNAME - (qname_len + 1));
+ qname[orig_qname_len] = '.';
+ ink_strlcpy(qname + orig_qname_len + 1, *domains, MAXDNAME - (orig_qname_len + 1));
qname_len = strlen(qname);
++domains;
}
@@ -1120,29 +1122,29 @@ dns_result(DNSHandler *h, DNSEntry *e, HostEnt *ent, bool retry) {
return;
} else if (e->domains && *e->domains) {
do {
- Debug("dns", "domain extending %s", e->qname);
+ Debug("dns", "domain extending, last tried '%s', original '%.*s'", e->qname, e->orig_qname_len, e->qname);
//int l = _strlen(e->qname);
char *dot = strchr(e->qname, '.');
if (dot) {
- if (e->qname_len + strlen(*e->domains) + 2 > MAXDNAME) {
- Debug("dns", "domain too large %s + %s", e->qname, *e->domains);
+ if (e->orig_qname_len + strlen(*e->domains) + 2 > MAXDNAME) {
+ Debug("dns", "domain too large %.*s + %s", e->orig_qname_len, e->qname, *e->domains);
goto LnextDomain;
}
- if (e->qname[e->qname_len - 1] != '.') {
- e->qname[e->qname_len] = '.';
- ink_strlcpy(e->qname + e->qname_len + 1, *e->domains, MAXDNAME - (e->qname_len + 1));
+ if (e->qname[e->orig_qname_len - 1] != '.') {
+ e->qname[e->orig_qname_len] = '.';
+ ink_strlcpy(e->qname + e->orig_qname_len + 1, *e->domains, MAXDNAME - (e->orig_qname_len + 1));
e->qname_len = strlen(e->qname);
} else {
- ink_strlcpy(e->qname + e->qname_len, *e->domains, MAXDNAME - e->qname_len);
+ ink_strlcpy(e->qname + e->orig_qname_len, *e->domains, MAXDNAME - e->orig_qname_len);
e->qname_len = strlen(e->qname);
}
} else {
- if (e->qname_len + strlen(*e->domains) + 2 > MAXDNAME) {
- Debug("dns", "domain too large %s + %s", e->qname, *e->domains);
+ if (e->orig_qname_len + strlen(*e->domains) + 2 > MAXDNAME) {
+ Debug("dns", "domain too large %.*s + %s", e->orig_qname_len, e->qname, *e->domains);
goto LnextDomain;
}
- e->qname[e->qname_len] = '.';
- ink_strlcpy(e->qname + e->qname_len + 1, *e->domains, MAXDNAME - (e->qname_len + 1));
+ e->qname[e->orig_qname_len] = '.';
+ ink_strlcpy(e->qname + e->orig_qname_len + 1, *e->domains, MAXDNAME - (e->orig_qname_len + 1));
e->qname_len = strlen(e->qname);
}
++(e->domains);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/dfdc9854/iocore/dns/P_DNSProcessor.h
----------------------------------------------------------------------
diff --git a/iocore/dns/P_DNSProcessor.h b/iocore/dns/P_DNSProcessor.h
index 7df7e10..9cb27ea 100644
--- a/iocore/dns/P_DNSProcessor.h
+++ b/iocore/dns/P_DNSProcessor.h
@@ -156,6 +156,7 @@ struct DNSEntry: public Continuation
ink_hrtime send_time;
char qname[MAXDNAME];
int qname_len;
+ int orig_qname_len;
char **domains;
EThread *submit_thread;
Action action;
@@ -179,8 +180,9 @@ struct DNSEntry: public Continuation
qtype(0),
host_res_style(HOST_RES_NONE),
retries(DEFAULT_DNS_RETRIES),
- which_ns(NO_NAMESERVER_SELECTED), submit_time(0), send_time(0), qname_len(0), domains(0),
- timeout(0), result_ent(0), dnsH(0), written_flag(false), once_written_flag(false), last(false)
+ which_ns(NO_NAMESERVER_SELECTED), submit_time(0), send_time(0), qname_len(0),
+ orig_qname_len(0), domains(0), timeout(0), result_ent(0), dnsH(0), written_flag(false),
+ once_written_flag(false), last(false)
{
for (int i = 0; i < MAX_DNS_RETRIES; i++)
id[i] = -1;
[4/4] git commit: TS-2595 Minor cleanup on strlcpy returns
Posted by zw...@apache.org.
TS-2595 Minor cleanup on strlcpy returns
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/b74425c0
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/b74425c0
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/b74425c0
Branch: refs/heads/master
Commit: b74425c05539466a37960f2d2c1f827f8dc65831
Parents: 871cd8b
Author: Leif Hedstrom <zw...@apache.org>
Authored: Mon Mar 3 14:36:23 2014 +0000
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Mon Mar 3 14:37:06 2014 +0000
----------------------------------------------------------------------
iocore/dns/DNS.cc | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b74425c0/iocore/dns/DNS.cc
----------------------------------------------------------------------
diff --git a/iocore/dns/DNS.cc b/iocore/dns/DNS.cc
index 4ddf05f..a93b6c9 100644
--- a/iocore/dns/DNS.cc
+++ b/iocore/dns/DNS.cc
@@ -384,12 +384,10 @@ DNSEntry::init(const char *x, int len, int qtype_arg, Continuation* acont,
if (len) {
len = len > (MAXDNAME - 1) ? (MAXDNAME - 1) : len;
memcpy(qname, x, len);
- qname_len = len;
- orig_qname_len = qname_len;
qname[len] = 0;
+ orig_qname_len = qname_len = len;
} else {
- ink_strlcpy(qname, x, MAXDNAME);
- qname_len = strlen(qname);
+ qname_len = ink_strlcpy(qname, x, MAXDNAME);
orig_qname_len = qname_len;
}
} else { //T_PTR
[3/4] git commit: Added TS-2595 to CHANGES.
Posted by zw...@apache.org.
Added TS-2595 to CHANGES.
This closes #52
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/871cd8b5
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/871cd8b5
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/871cd8b5
Branch: refs/heads/master
Commit: 871cd8b5b20375a14148c15520c3159fec4e3fc8
Parents: 7405d00
Author: Leif Hedstrom <zw...@apache.org>
Authored: Mon Mar 3 10:06:48 2014 +0000
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Mon Mar 3 14:37:06 2014 +0000
----------------------------------------------------------------------
CHANGES | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/871cd8b5/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 4fb3d85..3b21433 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 5.0.0
+ *) [TS-2595] DNS lookup failed with multiple search domains.
+ Author: Thach Tran <tr...@gmail.com>
+
*) [TS-2019] Fix the "vector inconsistency" errors.
*) [TS-2585] Add overridable configs support to regex_remap plugin.