envoyproxy/envoy

quiche: client re-connect upon INVALID_VERSION

Open

#8,479 创建于 2019年10月3日

在 GitHub 查看
 (5 评论) (0 反应) (0 负责人)C++ (5,373 fork)batch import
area/quichelp wanted

仓库指标

Star
 (27,997 star)
PR 合并指标
 (平均合并 8天) (30 天内合并 378 个 PR)

描述

A quic client session does version negotiation with server at the very beginning of the connection. But the connection doesn't re-try connect if server doesn't support the version this client session is created with, instead, it close the connection with INVALID_VERSION error and retain the advertised version list sent back by server. QuicSpdyClientSession::CryptoConnect() fails in such case. Its owner should pick a mutually supported version and try to connect thru another quic session.

In Envoy, connection creation is outside of client codec creation during with crypto handshake is done. This align with the logic described above. But currently, there is no retry upon the failure in integration test framework or any other production or toy client.

We need to add such re-try to support quic client connection failure upon INVALID_VERSION.

贡献者指南