Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Unified Diff: net/dns/dns_response.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/dns/dns_query_unittest.cc ('k') | net/dns/dns_response.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/dns/dns_response.h
diff --git a/net/dns/dns_response.h b/net/dns/dns_response.h
deleted file mode 100644
index 57abecf62536da8b056c0acbe6c89e7c90445fe8..0000000000000000000000000000000000000000
--- a/net/dns/dns_response.h
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_DNS_DNS_RESPONSE_H_
-#define NET_DNS_DNS_RESPONSE_H_
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/memory/ref_counted.h"
-#include "base/strings/string_piece.h"
-#include "base/time/time.h"
-#include "net/base/net_export.h"
-#include "net/base/net_util.h"
-
-namespace net {
-
-class AddressList;
-class DnsQuery;
-class IOBufferWithSize;
-
-namespace dns_protocol {
-struct Header;
-}
-
-// Parsed resource record.
-struct NET_EXPORT_PRIVATE DnsResourceRecord {
- DnsResourceRecord();
- ~DnsResourceRecord();
-
- std::string name; // in dotted form
- uint16 type;
- uint16 klass;
- uint32 ttl;
- base::StringPiece rdata; // points to the original response buffer
-};
-
-// Iterator to walk over resource records of the DNS response packet.
-class NET_EXPORT_PRIVATE DnsRecordParser {
- public:
- // Construct an uninitialized iterator.
- DnsRecordParser();
-
- // Construct an iterator to process the |packet| of given |length|.
- // |offset| points to the beginning of the answer section.
- DnsRecordParser(const void* packet, size_t length, size_t offset);
-
- // Returns |true| if initialized.
- bool IsValid() const { return packet_ != NULL; }
-
- // Returns |true| if no more bytes remain in the packet.
- bool AtEnd() const { return cur_ == packet_ + length_; }
-
- // Returns current offset into the packet.
- size_t GetOffset() const { return cur_ - packet_; }
-
- // Parses a (possibly compressed) DNS name from the packet starting at
- // |pos|. Stores output (even partial) in |out| unless |out| is NULL. |out|
- // is stored in the dotted form, e.g., "example.com". Returns number of bytes
- // consumed or 0 on failure.
- // This is exposed to allow parsing compressed names within RRDATA for TYPEs
- // such as NS, CNAME, PTR, MX, SOA.
- // See RFC 1035 section 4.1.4.
- unsigned ReadName(const void* pos, std::string* out) const;
-
- // Parses the next resource record into |record|. Returns true if succeeded.
- bool ReadRecord(DnsResourceRecord* record);
-
- // Skip a question section, returns true if succeeded.
- bool SkipQuestion();
-
- private:
- const char* packet_;
- size_t length_;
- // Current offset within the packet.
- const char* cur_;
-};
-
-// Buffer-holder for the DNS response allowing easy access to the header fields
-// and resource records. After reading into |io_buffer| must call InitParse to
-// position the RR parser.
-class NET_EXPORT_PRIVATE DnsResponse {
- public:
- // Possible results from ParseToAddressList.
- enum Result {
- DNS_PARSE_OK = 0,
- DNS_MALFORMED_RESPONSE, // DnsRecordParser failed before the end of
- // packet.
- DNS_MALFORMED_CNAME, // Could not parse CNAME out of RRDATA.
- DNS_NAME_MISMATCH, // Got an address but no ordered chain of CNAMEs
- // leads there.
- DNS_SIZE_MISMATCH, // Got an address but size does not match.
- DNS_CNAME_AFTER_ADDRESS, // Found CNAME after an address record.
- DNS_ADDRESS_TTL_MISMATCH, // OBSOLETE. No longer used.
- DNS_NO_ADDRESSES, // OBSOLETE. No longer used.
- // Only add new values here.
- DNS_PARSE_RESULT_MAX, // Bounding value for histograms.
- };
-
- // Constructs a response buffer large enough to store one byte more than
- // largest possible response, to detect malformed responses.
- DnsResponse();
-
- // Constructs a response buffer of given length. Used for TCP transactions.
- explicit DnsResponse(size_t length);
-
- // Constructs a response from |data|. Used for testing purposes only!
- DnsResponse(const void* data, size_t length, size_t answer_offset);
-
- ~DnsResponse();
-
- // Internal buffer accessor into which actual bytes of response will be
- // read.
- IOBufferWithSize* io_buffer() { return io_buffer_.get(); }
-
- // Assuming the internal buffer holds |nbytes| bytes, returns true iff the
- // packet matches the |query| id and question.
- bool InitParse(int nbytes, const DnsQuery& query);
-
- // Assuming the internal buffer holds |nbytes| bytes, initialize the parser
- // without matching it against an existing query.
- bool InitParseWithoutQuery(int nbytes);
-
- // Returns true if response is valid, that is, after successful InitParse.
- bool IsValid() const;
-
- // All of the methods below are valid only if the response is valid.
-
- // Accessors for the header.
- uint16 flags() const; // excluding rcode
- uint8 rcode() const;
-
- unsigned answer_count() const;
- unsigned additional_answer_count() const;
-
- // Accessors to the question. The qname is unparsed.
- base::StringPiece qname() const;
- uint16 qtype() const;
-
- // Returns qname in dotted format.
- std::string GetDottedName() const;
-
- // Returns an iterator to the resource records in the answer section.
- // The iterator is valid only in the scope of the DnsResponse.
- // This operation is idempotent.
- DnsRecordParser Parser() const;
-
- // Extracts an AddressList from this response. Returns SUCCESS if succeeded.
- // Otherwise returns a detailed error number.
- Result ParseToAddressList(AddressList* addr_list, base::TimeDelta* ttl) const;
-
- private:
- // Convenience for header access.
- const dns_protocol::Header* header() const;
-
- // Buffer into which response bytes are read.
- scoped_refptr<IOBufferWithSize> io_buffer_;
-
- // Iterator constructed after InitParse positioned at the answer section.
- // It is never updated afterwards, so can be used in accessors.
- DnsRecordParser parser_;
-
- DISALLOW_COPY_AND_ASSIGN(DnsResponse);
-};
-
-} // namespace net
-
-#endif // NET_DNS_DNS_RESPONSE_H_
« no previous file with comments | « net/dns/dns_query_unittest.cc ('k') | net/dns/dns_response.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698