aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_quic.c4
-rw-r--r--src/event/ngx_event_quic.h1
-rw-r--r--src/event/ngx_event_quic_transport.c15
3 files changed, 14 insertions, 6 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c
index 4b0050d07..a7e474803 100644
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -1163,9 +1163,7 @@ ngx_quic_negotiate_version(ngx_connection_t *c, ngx_quic_header_t *inpkt)
{
size_t len;
ngx_quic_header_t pkt;
-
- /* buffer size is calculated assuming a single supported version */
- static u_char buf[NGX_QUIC_MAX_LONG_HEADER + sizeof(uint32_t)];
+ static u_char buf[NGX_QUIC_MAX_UDP_PAYLOAD_SIZE];
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0,
"sending version negotiation packet");
diff --git a/src/event/ngx_event_quic.h b/src/event/ngx_event_quic.h
index 9078b6026..e8bf926a0 100644
--- a/src/event/ngx_event_quic.h
+++ b/src/event/ngx_event_quic.h
@@ -16,7 +16,6 @@
#ifndef NGX_QUIC_DRAFT_VERSION
#define NGX_QUIC_DRAFT_VERSION 29
#endif
-#define NGX_QUIC_VERSION (0xff000000 + NGX_QUIC_DRAFT_VERSION)
#define NGX_QUIC_MAX_SHORT_HEADER 25 /* 1 flags + 20 dcid + 4 pn */
#define NGX_QUIC_MAX_LONG_HEADER 56
diff --git a/src/event/ngx_event_quic_transport.c b/src/event/ngx_event_quic_transport.c
index 4248e867a..98c178ba0 100644
--- a/src/event/ngx_event_quic_transport.c
+++ b/src/event/ngx_event_quic_transport.c
@@ -56,6 +56,8 @@
: ((uint64_t) value) <= 1073741823 ? 4 \
: 8)
+#define NGX_QUIC_VERSION(c) (0xff000000 + (c))
+
static u_char *ngx_quic_parse_int(u_char *pos, u_char *end, uint64_t *out);
static void ngx_quic_build_int(u_char **pos, uint64_t value);
@@ -101,9 +103,18 @@ static ngx_int_t ngx_quic_parse_transport_param(u_char *p, u_char *end,
uint16_t id, ngx_quic_tp_t *dst);
-/* currently only single version (selected at compile-time) is supported */
uint32_t ngx_quic_versions[] = {
- NGX_QUIC_VERSION
+#if (NGX_QUIC_DRAFT_VERSION >= 29)
+ /* pretend we support all versions in range draft-29..v1 */
+ NGX_QUIC_VERSION(29),
+ NGX_QUIC_VERSION(30),
+ NGX_QUIC_VERSION(31),
+ NGX_QUIC_VERSION(32),
+ /* QUICv1 */
+ 0x00000001
+#else
+ NGX_QUIC_VERSION(NGX_QUIC_DRAFT_VERSION)
+#endif
};
#define NGX_QUIC_NVERSIONS \