| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "net/base/host_resolver_impl.h" | 5 #include "net/base/host_resolver_impl.h" | 
| 6 | 6 | 
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) | 
| 8 #include <Winsock2.h> | 8 #include <Winsock2.h> | 
| 9 #elif defined(OS_POSIX) | 9 #elif defined(OS_POSIX) | 
| 10 #include <netdb.h> | 10 #include <netdb.h> | 
| (...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 747   if (cur_completing_job_) | 747   if (cur_completing_job_) | 
| 748     cur_completing_job_->Cancel(); | 748     cur_completing_job_->Cancel(); | 
| 749 | 749 | 
| 750   NetworkChangeNotifier::RemoveObserver(this); | 750   NetworkChangeNotifier::RemoveObserver(this); | 
| 751 | 751 | 
| 752   // Delete the job pools. | 752   // Delete the job pools. | 
| 753   for (size_t i = 0u; i < arraysize(job_pools_); ++i) | 753   for (size_t i = 0u; i < arraysize(job_pools_); ++i) | 
| 754     delete job_pools_[i]; | 754     delete job_pools_[i]; | 
| 755 } | 755 } | 
| 756 | 756 | 
| 757 // TODO(eroman): Don't create cache entries for hostnames which are simply IP |  | 
| 758 // address literals. |  | 
| 759 int HostResolverImpl::Resolve(const RequestInfo& info, | 757 int HostResolverImpl::Resolve(const RequestInfo& info, | 
| 760                               AddressList* addresses, | 758                               AddressList* addresses, | 
| 761                               CompletionCallback* callback, | 759                               CompletionCallback* callback, | 
| 762                               RequestHandle* out_req, | 760                               RequestHandle* out_req, | 
| 763                               const BoundNetLog& net_log) { | 761                               const BoundNetLog& net_log) { | 
| 764   DCHECK(CalledOnValidThread()); | 762   DCHECK(CalledOnValidThread()); | 
| 765 | 763 | 
| 766   if (shutdown_) | 764   if (shutdown_) | 
| 767     return ERR_UNEXPECTED; | 765     return ERR_UNEXPECTED; | 
| 768 | 766 | 
| 769   // Choose a unique ID number for observers to see. | 767   // Choose a unique ID number for observers to see. | 
| 770   int request_id = next_request_id_++; | 768   int request_id = next_request_id_++; | 
| 771 | 769 | 
| 772   // Update the net log and notify registered observers. | 770   // Update the net log and notify registered observers. | 
| 773   OnStartRequest(net_log, request_id, info); | 771   OnStartRequest(net_log, request_id, info); | 
| 774 | 772 | 
|  | 773   // Check for IP literal. | 
|  | 774   IPAddressNumber ip_number; | 
|  | 775   if (ParseIPLiteralToNumber(info.hostname(), &ip_number)) { | 
|  | 776     DCHECK_EQ((info.host_resolver_flags() & | 
|  | 777                ~(HOST_RESOLVER_CANONNAME | HOST_RESOLVER_LOOPBACK_ONLY)), 0) | 
|  | 778         << " Unhandled flag"; | 
|  | 779     AddressList result(ip_number, info.port(), | 
|  | 780                        (info.host_resolver_flags() & HOST_RESOLVER_CANONNAME)); | 
|  | 781 | 
|  | 782     *addresses = result; | 
|  | 783     // Update the net log and notify registered observers. | 
|  | 784     OnFinishRequest(net_log, request_id, info, OK, | 
|  | 785                     0,  /* os_error (unknown since from cache) */ | 
|  | 786                     false  /* was_from_cache */); | 
|  | 787     return OK; | 
|  | 788   } | 
|  | 789 | 
| 775   // Build a key that identifies the request in the cache and in the | 790   // Build a key that identifies the request in the cache and in the | 
| 776   // outstanding jobs map. | 791   // outstanding jobs map. | 
| 777   Key key = GetEffectiveKeyForRequest(info); | 792   Key key = GetEffectiveKeyForRequest(info); | 
| 778 | 793 | 
| 779   // If we have an unexpired cache entry, use it. | 794   // If we have an unexpired cache entry, use it. | 
| 780   if (info.allow_cached_response() && cache_.get()) { | 795   if (info.allow_cached_response() && cache_.get()) { | 
| 781     const HostCache::Entry* cache_entry = cache_->Lookup( | 796     const HostCache::Entry* cache_entry = cache_->Lookup( | 
| 782         key, base::TimeTicks::Now()); | 797         key, base::TimeTicks::Now()); | 
| 783     if (cache_entry) { | 798     if (cache_entry) { | 
| 784       int net_error = cache_entry->error; | 799       int net_error = cache_entry->error; | 
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1168     if (r == req) | 1183     if (r == req) | 
| 1169       return error; | 1184       return error; | 
| 1170 | 1185 | 
| 1171     r->OnComplete(error, AddressList()); | 1186     r->OnComplete(error, AddressList()); | 
| 1172   } | 1187   } | 
| 1173 | 1188 | 
| 1174   return ERR_IO_PENDING; | 1189   return ERR_IO_PENDING; | 
| 1175 } | 1190 } | 
| 1176 | 1191 | 
| 1177 }  // namespace net | 1192 }  // namespace net | 
| OLD | NEW | 
|---|