| Index: net/filter/gzip_header.cc
|
| diff --git a/net/filter/gzip_header.cc b/net/filter/gzip_header.cc
|
| deleted file mode 100644
|
| index f4aca6b1518f3588ab2ff585c9a8ff8ac0d275cd..0000000000000000000000000000000000000000
|
| --- a/net/filter/gzip_header.cc
|
| +++ /dev/null
|
| @@ -1,181 +0,0 @@
|
| -// Copyright 2014 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.
|
| -
|
| -#include "net/filter/gzip_header.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "base/logging.h"
|
| -#include "third_party/zlib/zlib.h"
|
| -
|
| -namespace net {
|
| -
|
| -const uint8 GZipHeader::magic[] = { 0x1f, 0x8b };
|
| -
|
| -GZipHeader::GZipHeader() {
|
| - Reset();
|
| -}
|
| -
|
| -GZipHeader::~GZipHeader() {
|
| -}
|
| -
|
| -void GZipHeader::Reset() {
|
| - state_ = IN_HEADER_ID1;
|
| - flags_ = 0;
|
| - extra_length_ = 0;
|
| -}
|
| -
|
| -GZipHeader::Status GZipHeader::ReadMore(const char* inbuf, int inbuf_len,
|
| - const char** header_end) {
|
| - DCHECK_GE(inbuf_len, 0);
|
| - const uint8* pos = reinterpret_cast<const uint8*>(inbuf);
|
| - const uint8* const end = pos + inbuf_len;
|
| -
|
| - while ( pos < end ) {
|
| - switch ( state_ ) {
|
| - case IN_HEADER_ID1:
|
| - if ( *pos != magic[0] ) return INVALID_HEADER;
|
| - pos++;
|
| - state_++;
|
| - break;
|
| - case IN_HEADER_ID2:
|
| - if ( *pos != magic[1] ) return INVALID_HEADER;
|
| - pos++;
|
| - state_++;
|
| - break;
|
| - case IN_HEADER_CM:
|
| - if ( *pos != Z_DEFLATED ) return INVALID_HEADER;
|
| - pos++;
|
| - state_++;
|
| - break;
|
| - case IN_HEADER_FLG:
|
| - flags_ = (*pos) & (FLAG_FHCRC | FLAG_FEXTRA |
|
| - FLAG_FNAME | FLAG_FCOMMENT);
|
| - pos++;
|
| - state_++;
|
| - break;
|
| -
|
| - case IN_HEADER_MTIME_BYTE_0:
|
| - pos++;
|
| - state_++;
|
| - break;
|
| - case IN_HEADER_MTIME_BYTE_1:
|
| - pos++;
|
| - state_++;
|
| - break;
|
| - case IN_HEADER_MTIME_BYTE_2:
|
| - pos++;
|
| - state_++;
|
| - break;
|
| - case IN_HEADER_MTIME_BYTE_3:
|
| - pos++;
|
| - state_++;
|
| - break;
|
| -
|
| - case IN_HEADER_XFL:
|
| - pos++;
|
| - state_++;
|
| - break;
|
| -
|
| - case IN_HEADER_OS:
|
| - pos++;
|
| - state_++;
|
| - break;
|
| -
|
| - case IN_XLEN_BYTE_0:
|
| - if ( !(flags_ & FLAG_FEXTRA) ) {
|
| - state_ = IN_FNAME;
|
| - break;
|
| - }
|
| - // We have a two-byte little-endian length, followed by a
|
| - // field of that length.
|
| - extra_length_ = *pos;
|
| - pos++;
|
| - state_++;
|
| - break;
|
| - case IN_XLEN_BYTE_1:
|
| - extra_length_ += *pos << 8;
|
| - pos++;
|
| - state_++;
|
| - // We intentionally fall through, because if we have a
|
| - // zero-length FEXTRA, we want to check to notice that we're
|
| - // done reading the FEXTRA before we exit this loop...
|
| -
|
| - case IN_FEXTRA: {
|
| - // Grab the rest of the bytes in the extra field, or as many
|
| - // of them as are actually present so far.
|
| - const uint16 num_extra_bytes = static_cast<uint16>(std::min(
|
| - static_cast<ptrdiff_t>(extra_length_),
|
| - (end - pos)));
|
| - pos += num_extra_bytes;
|
| - extra_length_ -= num_extra_bytes;
|
| - if ( extra_length_ == 0 ) {
|
| - state_ = IN_FNAME; // advance when we've seen extra_length_ bytes
|
| - flags_ &= ~FLAG_FEXTRA; // we're done with the FEXTRA stuff
|
| - }
|
| - break;
|
| - }
|
| -
|
| - case IN_FNAME:
|
| - if ( !(flags_ & FLAG_FNAME) ) {
|
| - state_ = IN_FCOMMENT;
|
| - break;
|
| - }
|
| - // See if we can find the end of the \0-terminated FNAME field.
|
| - pos = reinterpret_cast<const uint8*>(memchr(pos, '\0', (end - pos)));
|
| - if ( pos != NULL ) {
|
| - pos++; // advance past the '\0'
|
| - flags_ &= ~FLAG_FNAME; // we're done with the FNAME stuff
|
| - state_ = IN_FCOMMENT;
|
| - } else {
|
| - pos = end; // everything we have so far is part of the FNAME
|
| - }
|
| - break;
|
| -
|
| - case IN_FCOMMENT:
|
| - if ( !(flags_ & FLAG_FCOMMENT) ) {
|
| - state_ = IN_FHCRC_BYTE_0;
|
| - break;
|
| - }
|
| - // See if we can find the end of the \0-terminated FCOMMENT field.
|
| - pos = reinterpret_cast<const uint8*>(memchr(pos, '\0', (end - pos)));
|
| - if ( pos != NULL ) {
|
| - pos++; // advance past the '\0'
|
| - flags_ &= ~FLAG_FCOMMENT; // we're done with the FCOMMENT stuff
|
| - state_ = IN_FHCRC_BYTE_0;
|
| - } else {
|
| - pos = end; // everything we have so far is part of the FNAME
|
| - }
|
| - break;
|
| -
|
| - case IN_FHCRC_BYTE_0:
|
| - if ( !(flags_ & FLAG_FHCRC) ) {
|
| - state_ = IN_DONE;
|
| - break;
|
| - }
|
| - pos++;
|
| - state_++;
|
| - break;
|
| -
|
| - case IN_FHCRC_BYTE_1:
|
| - pos++;
|
| - flags_ &= ~FLAG_FHCRC; // we're done with the FHCRC stuff
|
| - state_++;
|
| - break;
|
| -
|
| - case IN_DONE:
|
| - *header_end = reinterpret_cast<const char*>(pos);
|
| - return COMPLETE_HEADER;
|
| - }
|
| - }
|
| -
|
| - if ( (state_ > IN_HEADER_OS) && (flags_ == 0) ) {
|
| - *header_end = reinterpret_cast<const char*>(pos);
|
| - return COMPLETE_HEADER;
|
| - } else {
|
| - return INCOMPLETE_HEADER;
|
| - }
|
| -}
|
| -
|
| -} // namespace net
|
|
|