Mercurial > hg > nginx-quic
changeset 8195:4416b7ab0a27 quic
QUIC: multiple versions support.
Draft-29 and beyond are now treated as compatible versions.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 10 Nov 2020 00:23:04 +0300 |
parents | 340cd26158fb |
children | e0947c952d43 |
files | src/event/ngx_event_quic.c src/event/ngx_event_quic.h src/event/ngx_event_quic_transport.c |
diffstat | 3 files changed, 14 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -1163,9 +1163,7 @@ ngx_quic_negotiate_version(ngx_connectio { 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");
--- 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
--- 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_transpor 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 \