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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 for (size_t i = 0; i < name.size() && name[i]; i += name[i] + 1) | 51 for (size_t i = 0; i < name.size() && name[i]; i += name[i] + 1) |
52 ++count; | 52 ++count; |
53 return count; | 53 return count; |
54 } | 54 } |
55 | 55 |
56 bool IsIPLiteral(const std::string& hostname) { | 56 bool IsIPLiteral(const std::string& hostname) { |
57 IPAddressNumber ip; | 57 IPAddressNumber ip; |
58 return ParseIPLiteralToNumber(hostname, &ip); | 58 return ParseIPLiteralToNumber(hostname, &ip); |
59 } | 59 } |
60 | 60 |
61 base::Value* NetLogStartCallback(const std::string* hostname, | 61 scoped_ptr<base::Value> NetLogStartCallback( |
62 uint16 qtype, | 62 const std::string* hostname, |
63 NetLogCaptureMode /* capture_mode */) { | 63 uint16 qtype, |
64 base::DictionaryValue* dict = new base::DictionaryValue(); | 64 NetLogCaptureMode /* capture_mode */) { |
| 65 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
65 dict->SetString("hostname", *hostname); | 66 dict->SetString("hostname", *hostname); |
66 dict->SetInteger("query_type", qtype); | 67 dict->SetInteger("query_type", qtype); |
67 return dict; | 68 return dict.Pass(); |
68 }; | 69 }; |
69 | 70 |
70 // ---------------------------------------------------------------------------- | 71 // ---------------------------------------------------------------------------- |
71 | 72 |
72 // A single asynchronous DNS exchange, which consists of sending out a | 73 // A single asynchronous DNS exchange, which consists of sending out a |
73 // DNS query, waiting for a response, and returning the response that it | 74 // DNS query, waiting for a response, and returning the response that it |
74 // matches. Logging is done in the socket and in the outer DnsTransaction. | 75 // matches. Logging is done in the socket and in the outer DnsTransaction. |
75 class DnsAttempt { | 76 class DnsAttempt { |
76 public: | 77 public: |
77 explicit DnsAttempt(unsigned server_index) | 78 explicit DnsAttempt(unsigned server_index) |
(...skipping 13 matching lines...) Expand all Loading... |
91 | 92 |
92 // Returns the net log bound to the source of the socket. | 93 // Returns the net log bound to the source of the socket. |
93 virtual const BoundNetLog& GetSocketNetLog() const = 0; | 94 virtual const BoundNetLog& GetSocketNetLog() const = 0; |
94 | 95 |
95 // Returns the index of the destination server within DnsConfig::nameservers. | 96 // Returns the index of the destination server within DnsConfig::nameservers. |
96 unsigned server_index() const { return server_index_; } | 97 unsigned server_index() const { return server_index_; } |
97 | 98 |
98 // Returns a Value representing the received response, along with a reference | 99 // Returns a Value representing the received response, along with a reference |
99 // to the NetLog source source of the UDP socket used. The request must have | 100 // to the NetLog source source of the UDP socket used. The request must have |
100 // completed before this is called. | 101 // completed before this is called. |
101 base::Value* NetLogResponseCallback(NetLogCaptureMode capture_mode) const { | 102 scoped_ptr<base::Value> NetLogResponseCallback( |
| 103 NetLogCaptureMode capture_mode) const { |
102 DCHECK(GetResponse()->IsValid()); | 104 DCHECK(GetResponse()->IsValid()); |
103 | 105 |
104 base::DictionaryValue* dict = new base::DictionaryValue(); | 106 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
105 dict->SetInteger("rcode", GetResponse()->rcode()); | 107 dict->SetInteger("rcode", GetResponse()->rcode()); |
106 dict->SetInteger("answer_count", GetResponse()->answer_count()); | 108 dict->SetInteger("answer_count", GetResponse()->answer_count()); |
107 GetSocketNetLog().source().AddToEventParameters(dict); | 109 GetSocketNetLog().source().AddToEventParameters(dict.get()); |
108 return dict; | 110 return dict.Pass(); |
109 } | 111 } |
110 | 112 |
111 void set_result(int result) { | 113 void set_result(int result) { |
112 result_ = result; | 114 result_ = result; |
113 } | 115 } |
114 | 116 |
115 // True if current attempt is pending (waiting for server response). | 117 // True if current attempt is pending (waiting for server response). |
116 bool is_pending() const { | 118 bool is_pending() const { |
117 return result_ == ERR_IO_PENDING; | 119 return result_ == ERR_IO_PENDING; |
118 } | 120 } |
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
988 } // namespace | 990 } // namespace |
989 | 991 |
990 // static | 992 // static |
991 scoped_ptr<DnsTransactionFactory> DnsTransactionFactory::CreateFactory( | 993 scoped_ptr<DnsTransactionFactory> DnsTransactionFactory::CreateFactory( |
992 DnsSession* session) { | 994 DnsSession* session) { |
993 return scoped_ptr<DnsTransactionFactory>( | 995 return scoped_ptr<DnsTransactionFactory>( |
994 new DnsTransactionFactoryImpl(session)); | 996 new DnsTransactionFactoryImpl(session)); |
995 } | 997 } |
996 | 998 |
997 } // namespace net | 999 } // namespace net |
OLD | NEW |