Packages
hackney
3.0.3
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/lsquic/src/liblsquic/lsquic_packet_common.c
/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
/*
* lsquic_packet_common.c -- some common packet-related routines
*/
#include <stdint.h>
#include <stdio.h>
#include <time.h>
#include "lsquic.h"
#include "lsquic_types.h"
#include "lsquic_logger.h"
#include "lsquic_enc_sess.h"
#include "lsquic_packet_common.h"
const char *
lsquic_frame_types_to_str (char *buf, size_t bufsz,
enum quic_ft_bit frame_types)
{
char *p;
int i, w;
size_t sz;
if (bufsz > 0)
buf[0] = '\0';
p = buf;
for (i = 0; i < N_QUIC_FRAMES; ++i)
{
if (frame_types & (1 << i))
{
sz = bufsz - (p - buf);
w = snprintf(p, sz, "%.*s%s", p > buf, " ",
frame_type_2_str[i] + sizeof("QUIC_FRAME_") - 1);
if (w > (int) sz)
{
LSQ_WARN("not enough room for all frame types");
break;
}
p += w;
}
frame_types &= ~(1 << i);
}
return buf;
}
const char *const lsquic_hety2str[] =
{
[HETY_SHORT] = "SHORT",
[HETY_VERNEG] = "VERNEG",
[HETY_INITIAL] = "INIT",
[HETY_RETRY] = "RETRY",
[HETY_HANDSHAKE] = "HSK",
[HETY_0RTT] = "0-RTT",
};
/* [draft-ietf-quic-tls-14], Section 4 */
const enum packnum_space lsquic_hety2pns[] =
{
[HETY_SHORT] = PNS_APP,
[HETY_VERNEG] = 0,
[HETY_INITIAL] = PNS_INIT,
[HETY_RETRY] = 0,
[HETY_HANDSHAKE] = PNS_HSK,
[HETY_0RTT] = PNS_APP,
};
/* [draft-ietf-quic-tls-14], Section 4 */
const enum packnum_space lsquic_enclev2pns[] =
{
[ENC_LEV_INIT] = PNS_INIT,
[ENC_LEV_HSK] = PNS_HSK,
[ENC_LEV_0RTT] = PNS_APP,
[ENC_LEV_APP] = PNS_APP,
};
const char *const lsquic_pns2str[] =
{
[PNS_INIT] = "INIT pns",
[PNS_HSK] = "HSK pns",
[PNS_APP] = "APP pns",
};