18b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Copyright 2014 The Chromium Authors. All rights reserved.
28b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Use of this source code is governed by a BSD-style license that can be
38b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// found in the LICENSE file.
48b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
58b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#include "net/quic/quic_client_session_base.h"
68b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
78b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#include "net/quic/quic_flags.h"
88b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
98b720228d581a84fd173b6dcb2fa295b59db489aVikas Aroranamespace net {
108b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
118b720228d581a84fd173b6dcb2fa295b59db489aVikas AroraQuicClientSessionBase::QuicClientSessionBase(
128b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora    QuicConnection* connection,
138b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora    const QuicConfig& config)
148b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora    : QuicSession(connection, config) {}
158b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
168b720228d581a84fd173b6dcb2fa295b59db489aVikas AroraQuicClientSessionBase::~QuicClientSessionBase() {}
178b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
188b720228d581a84fd173b6dcb2fa295b59db489aVikas Aroravoid QuicClientSessionBase::OnCryptoHandshakeEvent(CryptoHandshakeEvent event) {
198b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  QuicSession::OnCryptoHandshakeEvent(event);
208b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  // Set FEC policy for streams immediately after sending CHLO and before any
218b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  // more data is sent.
228b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  if (!FLAGS_enable_quic_fec ||
238b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora      event != ENCRYPTION_FIRST_ESTABLISHED ||
248b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora      !config()->HasSendConnectionOptions() ||
258b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora      !ContainsQuicTag(config()->SendConnectionOptions(), kFHDR)) {
268b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora    return;
278b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  }
288b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  // kFHDR config maps to FEC protection always for headers stream.
298b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  // TODO(jri): Add crypto stream in addition to headers for kHDR.
308b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  headers_stream_->set_fec_policy(FEC_PROTECT_ALWAYS);
318b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora}
328b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
338b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora}  // namespace net
348b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora