summaryrefslogtreecommitdiffstats
path: root/net/base/host_resolver_impl.h
Commit message (Collapse)AuthorAgeFilesLines
* Refine IPv6 probe to require that the client has an IPv6 address on an interfacejar@chromium.org2010-03-161-3/+21
| | | | | | | | | | | | | | | | | | | | This currently only works on Posix, not windows. Network changes are monitored, and the test is repeated each time interfaces change (which is a subset of any IP addresses changing). The test performed is performed on a worker thread, so latency should not be an issue (even if we created much slower tests). The current test appears to takes in the raneg of 50-100ms, and probably (under the covers) does some reading from files). BUG=25680 BUG=12754 r=wtc,eroman Review URL: http://codereview.chromium.org/1006001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41743 0039d316-1c4b-4281-b951-d872f2087c98
* Generalize the net module's LoadLog facility from a passive container, to an ↵eroman@chromium.org2010-03-161-6/+7
| | | | | | | | | | | | | | | | event stream (NetLog). This makes it possible to associate a single NetLog with a URLRequestContext, and then attach observers to that log to watch the stream of events. This changelist attempts to do the most direct translation, so there will be subsequent iterations to clean up. The user-visible behavior should remain unchanged. BUG=37421 Review URL: http://codereview.chromium.org/848006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41689 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 40099 - Revert 39998 Revert 39996 Refine IPv6 probe to require that ↵jar@chromium.org2010-02-261-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the client has an IPv6 address on an interface It is indeed causing a perf regression in startup on Linux... I'll need to rearchitect to do the probes asynchronously, and get off the startup-critical-path. This currently only works on Posix, not windows. Network changes are monitored, and the test is repeated each time interfaces change (which is a subset of any IP addresses changing). The test performed is still relatively low latency, and we *may* need to eventually move to an high latency test, such as a DNS resolution, or an actual test connection. If we move in that direction, then we'll need to post a task to perform the work, rather than immediately returning. BUG=25680 BUG=12754 r=wtc,eroman Review URL: http://codereview.chromium.org/652072 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/660073 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/661164 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/660165 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40101 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 39998 - Revert 39996 Refine IPv6 probe to require that the client ↵jar@chromium.org2010-02-261-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | has an IPv6 address on an interface This is a second attempt to land a reviewed change. It was reverted because the tree got very red (for other reasons), and it was plausible that this change was causing startup latency in Mac and Linux (causing both perf bots to go red). If this landing turns those perf-bots red (tonight) I'll need to revert. (... and I'll need to rearchitect to do the probes asynchronously, and get off the startup-critical-path. This currently only works on Posix, not windows. Network changes are monitored, and the test is repeated each time interfaces change (which is a subset of any IP addresses changing). The test performed is still relatively low latency, and we *may* need to eventually move to an high latency test, such as a DNS resolution, or an actual test connection. If we move in that direction, then we'll need to post a task to perform the work, rather than immediately returning. BUG=25680 BUG=12754 r=wtc,eroman Review URL: http://codereview.chromium.org/652072 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/660073 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/661164 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40099 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 39996 - Refine IPv6 probe to require that the client has an IPv6 ↵jar@chromium.org2010-02-251-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | address on an interface This currently only works on Posix, not windows. Network changes are monitored, and the test is repeated each time interfaces change (which is a subset of any IP addresses changing). The test performed is still relatively low latency, and we *may* need to eventually move to an high latency test, such as a DNS resolution, or an actual test connection. If we move in that direction, then we'll need to post a task to perform the work, rather than immediately returning. BUG=25680 BUG=12754 r=wtc,eroman Review URL: http://codereview.chromium.org/652072 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/660073 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39998 0039d316-1c4b-4281-b951-d872f2087c98
* Refine IPv6 probe to require that the client has an IPv6 address on an interfacejar@chromium.org2010-02-251-3/+11
| | | | | | | | | | | | | | | | | | | This currently only works on Posix, not windows. Network changes are monitored, and the test is repeated each time interfaces change (which is a subset of any IP addresses changing). The test performed is still relatively low latency, and we *may* need to eventually move to an high latency test, such as a DNS resolution, or an actual test connection. If we move in that direction, then we'll need to post a task to perform the work, rather than immediately returning. BUG=25680 BUG=12754 r=wtc,eroman Review URL: http://codereview.chromium.org/652072 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39996 0039d316-1c4b-4281-b951-d872f2087c98
* Make MappedHostResolver display its internals on the about:net-internals ↵eroman@chromium.org2010-02-191-1/+1
| | | | | | | | | | | page (so use of the --host-resolver-rules flag doesn't limit features), and run through the Shutdown() method on exit. This reworks the "IsHostResolverImpl()" hack to be a bit more general. BUG=36053 Review URL: http://codereview.chromium.org/646003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39488 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the HostResolver::Shutdown() method.eroman@chromium.org2010-02-051-4/+4
| | | | | | | | | | | While this doesn't entirely remove the hack, it limits the scope of it to HostResolverImpl. Hopefully in the future HostResolver will not be refcounted so this can go away altogether. BUG=18373 Review URL: http://codereview.chromium.org/569035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38243 0039d316-1c4b-4281-b951-d872f2087c98
* Fix regression that broke the --disable-ipv6 command line flag.eroman@chromium.org2010-02-051-0/+5
| | | | | | | | | | | | BUG=34632 TEST= HostResolverImplTest.SetDefaultAddressFamily_IPv4 HostResolverImplTest.SetDefaultAddressFamily_IPv6 HostResolverImplTest.SetDefaultAddressFamily_Synchronous Review URL: http://codereview.chromium.org/577010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38167 0039d316-1c4b-4281-b951-d872f2087c98
* Pass the NetworkChangeNotifier to HostResolver.willchan@chromium.org2010-02-041-3/+4
| | | | | | | | | | | | | | | This requires the following refactors: (1) NetworkChangeNotifier moves out of HttpNetworkSession into IOThread. (2) HostResolver gets initialized with NetworkChangeNotifier. (3) NetworkChangeNotifier needs to get passed into HttpCache and HttpNetworkSession (required updating a lot of files). (4) NetworkChangeNotifier is no longer reference counted. It is owned by IOThread. (5) IOThread gains a new struct: Globals. It can only be used on the io thread. (6) ChromeURLRequestContextFactory uses IOThread::Globals to initialize ChromeURLRequest objects with the host resolver and network change notifier. BUG=26159 Review URL: http://codereview.chromium.org/552117 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38052 0039d316-1c4b-4281-b951-d872f2087c98
* Add fine grain tracing to HostResolverImpl.eroman@chromium.org2010-02-021-1/+23
| | | | | | | | | | | | | This will help in diagnosing the "slow resolving host" bugs. Users can now click an "Enable tracing" button on "chrome://net-internals/hostresolver". This logs detailed information on the DNS requests flowing through the browser (when they were received, when they were posted to the thread pool, when they started running on the worker thread, etc...). BUG=12754 Review URL: http://codereview.chromium.org/556094 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37776 0039d316-1c4b-4281-b951-d872f2087c98
* Add mechanism for global queueing and prioritization of DNS.eroman@chromium.org2010-01-301-1/+64
| | | | | | | | | | | | | | Currently this limit is very high (50), but it can be tuned through a variable. BUG=9598 TEST= HostResolverImplTest.HigherPriorityRequestsStartedFirst HostResolverImplTest.CancelPendingRequest HostResolverImplTest.QueueOverflow Review URL: http://codereview.chromium.org/542086 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37608 0039d316-1c4b-4281-b951-d872f2087c98
* Set up HostResolverImpl to flush cache on IP address change.willchan@chromium.org2010-01-111-5/+14
| | | | | | | | BUG=http://crbug.com/26159 Review URL: http://codereview.chromium.org/545003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35956 0039d316-1c4b-4281-b951-d872f2087c98
* Cache failed DNS resolutions for 1 second.eroman@chromium.org2009-12-101-10/+13
| | | | | | | | | | | | | | | | | | This is a very small time to live, since we want to be able to respond quickly when formerly unresolvable names become resolvable. Even such a small time is still useful, since cache misses for unresolvable names can be extremely costly (order of several seconds). For example, in our corp PAC script, the URL's host is resolved 3 times, so: Without caching, total runtime is (2.5 seconds) * 3 --> 7.5 seconds. Whereas with caching it would be: (2.5 seconds) * 1 --> 2.5 seconds This time to live will need to be tuned as part of bug 25472. BUG=11079 Review URL: http://codereview.chromium.org/464084 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34238 0039d316-1c4b-4281-b951-d872f2087c98
* Second patch in making destructors of refcounted objects private.jam@chromium.org2009-11-051-5/+5
| | | | | | | | BUG=26749 Review URL: http://codereview.chromium.org/368001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31165 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor: Change the interface from HostResolver::DisableIPv6() to ↵eroman@chromium.org2009-10-261-6/+4
| | | | | | | | | | HostResolver::SetDefaultAddressFamily(), to make it more general. This came up in a codereview comment, but was after I had checked in. Review URL: http://codereview.chromium.org/303026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30063 0039d316-1c4b-4281-b951-d872f2087c98
* Add a mechanism to disable IPv6.eroman@chromium.org2009-10-211-4/+14
| | | | | | | | | | | | | | | | | | | (1) Adds the ability to specify the address family on a per-request basis. (2) Exposes a --disable-ipv6 flag to chrome that changes the default address family from AF_UNSPEC to AF_INET (same sort of thing Firefox does). (3) Changes the backing datastructure for HostCache:EntryMap and HostResolverImpl::JobMap from a "hash_map" to a "std::map". This was for consistency with other code (when I went to add a custom hash trait, I couldn't find any existing code which was using hashmap for custom keys). (4) Updates about:net-internals to display an address family for the hostcache dump (since it is now a part of the key). This change is in anticipation of turning off IPv6 host resolving in the PAC utility functions (see bug 24641). But it is also a feature addition. BUG=24641 TEST=HostCacheTest.AddressFamilyIsPartOfKey Review URL: http://codereview.chromium.org/302010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29686 0039d316-1c4b-4281-b951-d872f2087c98
* Add a visualizer for the HostCache (DNS cache) on the network internals page.eroman@chromium.org2009-09-021-0/+1
| | | | | | | | BUG=http://crbug.com/14478 Review URL: http://codereview.chromium.org/172100 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25227 0039d316-1c4b-4281-b951-d872f2087c98
* LoadLog is used as an output parameter, reorder it to the last parameter.willchan@chromium.org2009-08-141-3/+3
| | | | | | Review URL: http://codereview.chromium.org/164531 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23419 0039d316-1c4b-4281-b951-d872f2087c98
* Implement LoadLog, and hook up HostResolverImpl to LoadLog.ericroman@google.com2009-08-141-12/+15
| | | | | | | | | | | | The functionality in load_log_util.h is currently unused, but since it motivates the implementation of LoadLog, figured it should be included with this review. Note that I decided against defining the loggable event types as LoadStates, since I wanted more flexibility in adding crazy stuff, and they really seem too implementation specific to be in LoadStates. BUG=http://crbug.com/14478 TEST=net_unittests Review URL: http://codereview.chromium.org/165404 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23412 0039d316-1c4b-4281-b951-d872f2087c98
* Add a "LoadLog" parameter to transactions, hostresolver, clientsocketpool ↵ericroman@google.com2009-08-121-2/+5
| | | | | | | | and proyxservice.This dependency comes from the parent URLRequest, and is used as a container for per-request profiling data.This change is strictly a no-op refactor -- the parameter is unused, and LoadLog does nothing.BUG=http://crbug.com/14478TEST=none -- just needs to compile and pass existing tests.DESIGN=<http://docs.google.com/Doc?id=dfhcnb2v_21gbtrcpr3&hl=en> Review URL: http://codereview.chromium.org/126303 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23127 0039d316-1c4b-4281-b951-d872f2087c98
* Refactorings surrounding HostResolver:ericroman@google.com2009-07-151-0/+136
(1) Extract HostResolver to an interface. The existing concrete implementation is now named HostResolverImpl. This makes it possible to create mocks with more complex behavior (i.e. choose via rules if response will be sync vs async). (2) Transform HostMapper into HostResolverProc. Conceptually HostResolverProc maps a hostname to a socket address, whereas HostMapper mapped a hostname to another hostname (so you were still at the mercy of the system's host resolver). With HostResolverProc you can specify the exact AddressList, making it possible to run tests requiring IPv6 socketaddrs on systems (like WinXP) that don't actually support it. (3) Add a MockHostResolver implementation of HostResolver. This replaces the [ScopedHostMapper + RuleBasedHostMapper + HostResolver] combo. It is less clunky and a bit more expressive. BUG=http://crbug.com/16452 R=willchan TEST=existing Review URL: http://codereview.chromium.org/149511 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20795 0039d316-1c4b-4281-b951-d872f2087c98