diff options
author | ericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 00:49:38 +0000 |
---|---|---|
committer | ericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 00:49:38 +0000 |
commit | 8a00f00ab5d68ffcc998fd04d2ca343af7cdf190 (patch) | |
tree | fd464ba49db4271c76c1cf8f769a22120ad631af /net/ftp | |
parent | 77ae132c1bfdd986228b6f1c0d8c63baa441afdf (diff) | |
download | chromium_src-8a00f00ab5d68ffcc998fd04d2ca343af7cdf190.zip chromium_src-8a00f00ab5d68ffcc998fd04d2ca343af7cdf190.tar.gz chromium_src-8a00f00ab5d68ffcc998fd04d2ca343af7cdf190.tar.bz2 |
* Avoid doing concurrent DNS resolves of the same hostname in HostResolver.
* Add a 1 minute cache for host resolves.
* Refactor HostResolver to handle multiple requests.
* Make HostResolver a dependency of URLRequestContext. operate the HostResolver
in async mode for proxy resolver (bridging to IO thread).
TEST=unittests
BUG=13163
Review URL: http://codereview.chromium.org/118100
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18236 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/ftp')
-rw-r--r-- | net/ftp/ftp_network_layer.cc | 11 | ||||
-rw-r--r-- | net/ftp/ftp_network_layer.h | 5 | ||||
-rw-r--r-- | net/ftp/ftp_network_session.h | 7 | ||||
-rw-r--r-- | net/ftp/ftp_network_transaction.cc | 1 | ||||
-rw-r--r-- | net/ftp/ftp_network_transaction.h | 3 |
5 files changed, 18 insertions, 9 deletions
diff --git a/net/ftp/ftp_network_layer.cc b/net/ftp/ftp_network_layer.cc index e05b67f..fa0e87c 100644 --- a/net/ftp/ftp_network_layer.cc +++ b/net/ftp/ftp_network_layer.cc @@ -10,17 +10,18 @@ namespace net { -FtpNetworkLayer::FtpNetworkLayer() - : suspended_(false) { - session_ = new FtpNetworkSession(); +FtpNetworkLayer::FtpNetworkLayer(HostResolver* host_resolver) + : session_(new FtpNetworkSession(host_resolver)), + suspended_(false) { } FtpNetworkLayer::~FtpNetworkLayer() { } // static -FtpTransactionFactory* FtpNetworkLayer::CreateFactory() { - return new FtpNetworkLayer(); +FtpTransactionFactory* FtpNetworkLayer::CreateFactory( + HostResolver* host_resolver) { + return new FtpNetworkLayer(host_resolver); } FtpTransaction* FtpNetworkLayer::CreateTransaction() { diff --git a/net/ftp/ftp_network_layer.h b/net/ftp/ftp_network_layer.h index 71bd3b9..2d37eae 100644 --- a/net/ftp/ftp_network_layer.h +++ b/net/ftp/ftp_network_layer.h @@ -12,13 +12,14 @@ namespace net { class FtpNetworkSession; class FtpAuthCache; +class HostResolver; class FtpNetworkLayer : public FtpTransactionFactory { public: - FtpNetworkLayer(); + explicit FtpNetworkLayer(HostResolver* host_resolver); ~FtpNetworkLayer(); - static FtpTransactionFactory* CreateFactory(); + static FtpTransactionFactory* CreateFactory(HostResolver* host_resolver); // FtpTransactionFactory methods: virtual FtpTransaction* CreateTransaction(); diff --git a/net/ftp/ftp_network_session.h b/net/ftp/ftp_network_session.h index 13ab216..29c34d2 100644 --- a/net/ftp/ftp_network_session.h +++ b/net/ftp/ftp_network_session.h @@ -10,14 +10,19 @@ namespace net { +class HostResolver; + // This class holds session objects used by FtpNetworkTransaction objects. class FtpNetworkSession : public base::RefCounted<FtpNetworkSession> { public: - FtpNetworkSession() {} + explicit FtpNetworkSession(HostResolver* host_resolver) + : host_resolver_(host_resolver) {} + HostResolver* host_resolver() { return host_resolver_; } FtpAuthCache* auth_cache() { return &auth_cache_; } private: + HostResolver* host_resolver_; FtpAuthCache auth_cache_; }; diff --git a/net/ftp/ftp_network_transaction.cc b/net/ftp/ftp_network_transaction.cc index ae6e4fc..87f9217 100644 --- a/net/ftp/ftp_network_transaction.cc +++ b/net/ftp/ftp_network_transaction.cc @@ -34,6 +34,7 @@ FtpNetworkTransaction::FtpNetworkTransaction( user_callback_(NULL), session_(session), request_(NULL), + resolver_(session->host_resolver()), read_ctrl_buf_size_(kCtrlBufLen), response_message_buf_len_(0), read_data_buf_len_(0), diff --git a/net/ftp/ftp_network_transaction.h b/net/ftp/ftp_network_transaction.h index 0bb67e5..53f0b29 100644 --- a/net/ftp/ftp_network_transaction.h +++ b/net/ftp/ftp_network_transaction.h @@ -142,7 +142,8 @@ class FtpNetworkTransaction : public FtpTransaction { const FtpRequestInfo* request_; FtpResponseInfo response_; - HostResolver resolver_; + // Cancels the outstanding request on destruction. + SingleRequestHostResolver resolver_; AddressList addresses_; // User buffer and length passed to the Read method. |