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