summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authormbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-10 07:17:05 +0000
committermbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-10 07:17:05 +0000
commit19ab143cb20daa0da297cce45668629dbed29afa (patch)
tree6237045cd469523a89b558d26eaadc157518d979 /net
parent2960d47c4f2ba14de7d709e6ba47be8b9dc273f2 (diff)
downloadchromium_src-19ab143cb20daa0da297cce45668629dbed29afa.zip
chromium_src-19ab143cb20daa0da297cce45668629dbed29afa.tar.gz
chromium_src-19ab143cb20daa0da297cce45668629dbed29afa.tar.bz2
Strip canonical name from the list of addresses being appended.
Append is only used for tests, so this is non-critical code. BUG=none TEST=none Review URL: http://codereview.chromium.org/6626077 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77609 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/base/address_list.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/net/base/address_list.cc b/net/base/address_list.cc
index d2f1974..83df606 100644
--- a/net/base/address_list.cc
+++ b/net/base/address_list.cc
@@ -178,13 +178,22 @@ void AddressList::Append(const struct addrinfo* head) {
} else {
new_head = data_->head;
}
-
// Find the end of current linked list and append new data there.
struct addrinfo* copy_ptr = new_head;
while (copy_ptr->ai_next)
copy_ptr = copy_ptr->ai_next;
- DCHECK(!head->ai_canonname);
copy_ptr->ai_next = CreateCopyOfAddrinfo(head, true);
+
+ // Only the head of the list should have a canonname. Strip any
+ // canonical name in the appended data.
+ copy_ptr = copy_ptr->ai_next;
+ while (copy_ptr) {
+ if (copy_ptr->ai_canonname) {
+ free(copy_ptr->ai_canonname);
+ copy_ptr->ai_canonname = NULL;
+ }
+ copy_ptr = copy_ptr->ai_next;
+ }
}
void AddressList::SetPort(int port) {