blob: 76dd39fd8bb4c7f24731cc5bb4624e920f2ebc8e [file] [log] [blame]
// Copyright (c) 2018 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 "quiche/quic/tools/quic_simple_client_stream.h"
#include "quiche/common/platform/api/quiche_logging.h"
namespace quic {
void QuicSimpleClientStream::OnBodyAvailable() {
if (!drop_response_body_) {
QuicSpdyClientStream::OnBodyAvailable();
return;
}
while (HasBytesToRead()) {
struct iovec iov;
if (GetReadableRegions(&iov, 1) == 0) {
break;
}
MarkConsumed(iov.iov_len);
}
if (sequencer()->IsClosed()) {
OnFinRead();
} else {
sequencer()->SetUnblocked();
}
}
bool QuicSimpleClientStream::ParseAndValidateStatusCode() {
const size_t num_previous_interim_headers = preliminary_headers().size();
if (!QuicSpdyClientStream::ParseAndValidateStatusCode()) {
return false;
}
// The base ParseAndValidateStatusCode() may have added a preliminary header.
if (preliminary_headers().size() > num_previous_interim_headers) {
QUICHE_DCHECK_EQ(preliminary_headers().size(),
num_previous_interim_headers + 1);
if (on_interim_headers_) {
on_interim_headers_(preliminary_headers().back());
}
}
return true;
}
} // namespace quic