ngtcp2: disconnect the QUIC connection proper

Reported-by: mehatzri on github
Reviewed-by: Tatsuhiro Tsujikawa
Fixes #8534
closes #8569
This commit is contained in:
Daniel Stenberg 2022-03-09 14:16:47 +01:00
Родитель 2583c3d1ce
Коммит 96edc7954f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 5CC908FDB71E12C2
1 изменённых файлов: 15 добавлений и 0 удалений

Просмотреть файл

@ -858,8 +858,23 @@ static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
static void qs_disconnect(struct quicsocket *qs)
{
char buffer[NGTCP2_MAX_UDP_PAYLOAD_SIZE];
ngtcp2_tstamp ts;
ngtcp2_ssize rc;
if(!qs->conn) /* already closed */
return;
ts = timestamp();
rc = ngtcp2_conn_write_connection_close(qs->qconn, NULL, /* path */
NULL, /* pkt_info */
(uint8_t *)buffer, sizeof(buffer),
0, /* error_code */
NULL, 0, /* reason + len */
ts);
if(rc > 0) {
while((send(qs->conn->sock[FIRSTSOCKET], buffer, rc, 0) == -1) &&
SOCKERRNO == EINTR);
}
qs->conn = NULL;
if(qs->qlogfd != -1) {
close(qs->qlogfd);