listener_stats_(listener_stats), per_worker_stats_(per_worker_stats), dispatcher_(dispatcher),
quic_stat_names_.chargeQuicConnectionCloseStats(listener_config_->listenerScope(), error, source,
return new EnvoyQuicTimeWaitListManager(writer(), this, helper()->GetClock(), alarm_factory(),
// TODO(danzh) use passed-in ALPN instead of hard-coded h3 after proof source interfaces takes in
listen_socket_.ioHandle(), self_address, peer_address, std::string(parsed_chlo.sni), "h3");
connection_socket->connectionInfoProvider().setListenerInfo(listener_config_->listenerInfo());
for (auto address_family : {quiche::IpAddressFamily::IP_V4, quiche::IpAddressFamily::IP_V6}) {
quic::ParsedQuicVersionVector{version}, std::move(connection_socket), connection_id_generator,
// Retain the number of connections in the list early because closing the connection will change
ASSERT(connections_by_filter_chain_.find(filter_chain) == connections_by_filter_chain_.end());
void EnvoyQuicDispatcher::updateListenerConfig(Network::ListenerConfig& new_listener_config) {