| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/dns/dns_transaction.h" | 5 #include "net/dns/dns_transaction.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 DnsUDPAttempt(unsigned server_index, | 134 DnsUDPAttempt(unsigned server_index, |
| 135 scoped_ptr<DnsSession::SocketLease> socket_lease, | 135 scoped_ptr<DnsSession::SocketLease> socket_lease, |
| 136 scoped_ptr<DnsQuery> query) | 136 scoped_ptr<DnsQuery> query) |
| 137 : DnsAttempt(server_index), | 137 : DnsAttempt(server_index), |
| 138 next_state_(STATE_NONE), | 138 next_state_(STATE_NONE), |
| 139 received_malformed_response_(false), | 139 received_malformed_response_(false), |
| 140 socket_lease_(socket_lease.Pass()), | 140 socket_lease_(socket_lease.Pass()), |
| 141 query_(query.Pass()) {} | 141 query_(query.Pass()) {} |
| 142 | 142 |
| 143 // DnsAttempt: | 143 // DnsAttempt: |
| 144 virtual int Start(const CompletionCallback& callback) OVERRIDE { | 144 virtual int Start(const CompletionCallback& callback) override { |
| 145 DCHECK_EQ(STATE_NONE, next_state_); | 145 DCHECK_EQ(STATE_NONE, next_state_); |
| 146 callback_ = callback; | 146 callback_ = callback; |
| 147 start_time_ = base::TimeTicks::Now(); | 147 start_time_ = base::TimeTicks::Now(); |
| 148 next_state_ = STATE_SEND_QUERY; | 148 next_state_ = STATE_SEND_QUERY; |
| 149 return DoLoop(OK); | 149 return DoLoop(OK); |
| 150 } | 150 } |
| 151 | 151 |
| 152 virtual const DnsQuery* GetQuery() const OVERRIDE { | 152 virtual const DnsQuery* GetQuery() const override { |
| 153 return query_.get(); | 153 return query_.get(); |
| 154 } | 154 } |
| 155 | 155 |
| 156 virtual const DnsResponse* GetResponse() const OVERRIDE { | 156 virtual const DnsResponse* GetResponse() const override { |
| 157 const DnsResponse* resp = response_.get(); | 157 const DnsResponse* resp = response_.get(); |
| 158 return (resp != NULL && resp->IsValid()) ? resp : NULL; | 158 return (resp != NULL && resp->IsValid()) ? resp : NULL; |
| 159 } | 159 } |
| 160 | 160 |
| 161 virtual const BoundNetLog& GetSocketNetLog() const OVERRIDE { | 161 virtual const BoundNetLog& GetSocketNetLog() const override { |
| 162 return socket_lease_->socket()->NetLog(); | 162 return socket_lease_->socket()->NetLog(); |
| 163 } | 163 } |
| 164 | 164 |
| 165 private: | 165 private: |
| 166 enum State { | 166 enum State { |
| 167 STATE_SEND_QUERY, | 167 STATE_SEND_QUERY, |
| 168 STATE_SEND_QUERY_COMPLETE, | 168 STATE_SEND_QUERY_COMPLETE, |
| 169 STATE_READ_RESPONSE, | 169 STATE_READ_RESPONSE, |
| 170 STATE_READ_RESPONSE_COMPLETE, | 170 STATE_READ_RESPONSE_COMPLETE, |
| 171 STATE_NONE, | 171 STATE_NONE, |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 scoped_ptr<StreamSocket> socket, | 299 scoped_ptr<StreamSocket> socket, |
| 300 scoped_ptr<DnsQuery> query) | 300 scoped_ptr<DnsQuery> query) |
| 301 : DnsAttempt(server_index), | 301 : DnsAttempt(server_index), |
| 302 next_state_(STATE_NONE), | 302 next_state_(STATE_NONE), |
| 303 socket_(socket.Pass()), | 303 socket_(socket.Pass()), |
| 304 query_(query.Pass()), | 304 query_(query.Pass()), |
| 305 length_buffer_(new IOBufferWithSize(sizeof(uint16))), | 305 length_buffer_(new IOBufferWithSize(sizeof(uint16))), |
| 306 response_length_(0) {} | 306 response_length_(0) {} |
| 307 | 307 |
| 308 // DnsAttempt: | 308 // DnsAttempt: |
| 309 virtual int Start(const CompletionCallback& callback) OVERRIDE { | 309 virtual int Start(const CompletionCallback& callback) override { |
| 310 DCHECK_EQ(STATE_NONE, next_state_); | 310 DCHECK_EQ(STATE_NONE, next_state_); |
| 311 callback_ = callback; | 311 callback_ = callback; |
| 312 start_time_ = base::TimeTicks::Now(); | 312 start_time_ = base::TimeTicks::Now(); |
| 313 next_state_ = STATE_CONNECT_COMPLETE; | 313 next_state_ = STATE_CONNECT_COMPLETE; |
| 314 int rv = socket_->Connect(base::Bind(&DnsTCPAttempt::OnIOComplete, | 314 int rv = socket_->Connect(base::Bind(&DnsTCPAttempt::OnIOComplete, |
| 315 base::Unretained(this))); | 315 base::Unretained(this))); |
| 316 if (rv == ERR_IO_PENDING) { | 316 if (rv == ERR_IO_PENDING) { |
| 317 set_result(rv); | 317 set_result(rv); |
| 318 return rv; | 318 return rv; |
| 319 } | 319 } |
| 320 return DoLoop(rv); | 320 return DoLoop(rv); |
| 321 } | 321 } |
| 322 | 322 |
| 323 virtual const DnsQuery* GetQuery() const OVERRIDE { | 323 virtual const DnsQuery* GetQuery() const override { |
| 324 return query_.get(); | 324 return query_.get(); |
| 325 } | 325 } |
| 326 | 326 |
| 327 virtual const DnsResponse* GetResponse() const OVERRIDE { | 327 virtual const DnsResponse* GetResponse() const override { |
| 328 const DnsResponse* resp = response_.get(); | 328 const DnsResponse* resp = response_.get(); |
| 329 return (resp != NULL && resp->IsValid()) ? resp : NULL; | 329 return (resp != NULL && resp->IsValid()) ? resp : NULL; |
| 330 } | 330 } |
| 331 | 331 |
| 332 virtual const BoundNetLog& GetSocketNetLog() const OVERRIDE { | 332 virtual const BoundNetLog& GetSocketNetLog() const override { |
| 333 return socket_->NetLog(); | 333 return socket_->NetLog(); |
| 334 } | 334 } |
| 335 | 335 |
| 336 private: | 336 private: |
| 337 enum State { | 337 enum State { |
| 338 STATE_CONNECT_COMPLETE, | 338 STATE_CONNECT_COMPLETE, |
| 339 STATE_SEND_LENGTH, | 339 STATE_SEND_LENGTH, |
| 340 STATE_SEND_QUERY, | 340 STATE_SEND_QUERY, |
| 341 STATE_READ_LENGTH, | 341 STATE_READ_LENGTH, |
| 342 STATE_READ_LENGTH_COMPLETE, | 342 STATE_READ_LENGTH_COMPLETE, |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 DCHECK(!IsIPLiteral(hostname_)); | 567 DCHECK(!IsIPLiteral(hostname_)); |
| 568 } | 568 } |
| 569 | 569 |
| 570 virtual ~DnsTransactionImpl() { | 570 virtual ~DnsTransactionImpl() { |
| 571 if (!callback_.is_null()) { | 571 if (!callback_.is_null()) { |
| 572 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_DNS_TRANSACTION, | 572 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_DNS_TRANSACTION, |
| 573 ERR_ABORTED); | 573 ERR_ABORTED); |
| 574 } // otherwise logged in DoCallback or Start | 574 } // otherwise logged in DoCallback or Start |
| 575 } | 575 } |
| 576 | 576 |
| 577 virtual const std::string& GetHostname() const OVERRIDE { | 577 virtual const std::string& GetHostname() const override { |
| 578 DCHECK(CalledOnValidThread()); | 578 DCHECK(CalledOnValidThread()); |
| 579 return hostname_; | 579 return hostname_; |
| 580 } | 580 } |
| 581 | 581 |
| 582 virtual uint16 GetType() const OVERRIDE { | 582 virtual uint16 GetType() const override { |
| 583 DCHECK(CalledOnValidThread()); | 583 DCHECK(CalledOnValidThread()); |
| 584 return qtype_; | 584 return qtype_; |
| 585 } | 585 } |
| 586 | 586 |
| 587 virtual void Start() OVERRIDE { | 587 virtual void Start() override { |
| 588 DCHECK(!callback_.is_null()); | 588 DCHECK(!callback_.is_null()); |
| 589 DCHECK(attempts_.empty()); | 589 DCHECK(attempts_.empty()); |
| 590 net_log_.BeginEvent(NetLog::TYPE_DNS_TRANSACTION, | 590 net_log_.BeginEvent(NetLog::TYPE_DNS_TRANSACTION, |
| 591 base::Bind(&NetLogStartCallback, &hostname_, qtype_)); | 591 base::Bind(&NetLogStartCallback, &hostname_, qtype_)); |
| 592 AttemptResult result(PrepareSearch(), NULL); | 592 AttemptResult result(PrepareSearch(), NULL); |
| 593 if (result.rv == OK) { | 593 if (result.rv == OK) { |
| 594 qnames_initial_size_ = qnames_.size(); | 594 qnames_initial_size_ = qnames_.size(); |
| 595 if (qtype_ == dns_protocol::kTypeA) | 595 if (qtype_ == dns_protocol::kTypeA) |
| 596 UMA_HISTOGRAM_COUNTS("AsyncDNS.SuffixSearchStart", qnames_.size()); | 596 UMA_HISTOGRAM_COUNTS("AsyncDNS.SuffixSearchStart", qnames_.size()); |
| 597 result = ProcessAttemptResult(StartQuery()); | 597 result = ProcessAttemptResult(StartQuery()); |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 class DnsTransactionFactoryImpl : public DnsTransactionFactory { | 965 class DnsTransactionFactoryImpl : public DnsTransactionFactory { |
| 966 public: | 966 public: |
| 967 explicit DnsTransactionFactoryImpl(DnsSession* session) { | 967 explicit DnsTransactionFactoryImpl(DnsSession* session) { |
| 968 session_ = session; | 968 session_ = session; |
| 969 } | 969 } |
| 970 | 970 |
| 971 virtual scoped_ptr<DnsTransaction> CreateTransaction( | 971 virtual scoped_ptr<DnsTransaction> CreateTransaction( |
| 972 const std::string& hostname, | 972 const std::string& hostname, |
| 973 uint16 qtype, | 973 uint16 qtype, |
| 974 const CallbackType& callback, | 974 const CallbackType& callback, |
| 975 const BoundNetLog& net_log) OVERRIDE { | 975 const BoundNetLog& net_log) override { |
| 976 return scoped_ptr<DnsTransaction>(new DnsTransactionImpl( | 976 return scoped_ptr<DnsTransaction>(new DnsTransactionImpl( |
| 977 session_.get(), hostname, qtype, callback, net_log)); | 977 session_.get(), hostname, qtype, callback, net_log)); |
| 978 } | 978 } |
| 979 | 979 |
| 980 private: | 980 private: |
| 981 scoped_refptr<DnsSession> session_; | 981 scoped_refptr<DnsSession> session_; |
| 982 }; | 982 }; |
| 983 | 983 |
| 984 } // namespace | 984 } // namespace |
| 985 | 985 |
| 986 // static | 986 // static |
| 987 scoped_ptr<DnsTransactionFactory> DnsTransactionFactory::CreateFactory( | 987 scoped_ptr<DnsTransactionFactory> DnsTransactionFactory::CreateFactory( |
| 988 DnsSession* session) { | 988 DnsSession* session) { |
| 989 return scoped_ptr<DnsTransactionFactory>( | 989 return scoped_ptr<DnsTransactionFactory>( |
| 990 new DnsTransactionFactoryImpl(session)); | 990 new DnsTransactionFactoryImpl(session)); |
| 991 } | 991 } |
| 992 | 992 |
| 993 } // namespace net | 993 } // namespace net |
| OLD | NEW |