Mercurial > hg > nginx
changeset 8209:36fe31ce9582 quic
Removed hardcoded CRYPTO and ACK frame sizes.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Thu, 12 Mar 2020 14:23:27 +0300 |
parents | 4ae9ac69ab93 |
children | b761ca7df7d0 |
files | src/event/ngx_event_quic.c |
diffstat | 1 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c Thu Mar 12 16:54:43 2020 +0300 +++ b/src/event/ngx_event_quic.c Thu Mar 12 14:23:27 2020 +0300 @@ -591,8 +591,18 @@ static size_t ngx_quic_create_ack(u_char *p, ngx_quic_ack_frame_t *ack) { + size_t len; + + /* minimal ACK packet */ + if (p == NULL) { - return 5; /* minimal ACK */ + len = ngx_quic_varint_len(NGX_QUIC_FT_ACK); + len += ngx_quic_varint_len(ack->pn); + len += ngx_quic_varint_len(0); + len += ngx_quic_varint_len(0); + len += ngx_quic_varint_len(ack->pn); + + return len; } ngx_quic_build_int(&p, NGX_QUIC_FT_ACK); @@ -608,10 +618,16 @@ static size_t ngx_quic_create_crypto(u_char *p, ngx_quic_crypto_frame_t *crypto) { + size_t len; u_char *start; if (p == NULL) { - return 2 + ngx_quic_varint_len(crypto->len) + crypto->len; + len = ngx_quic_varint_len(NGX_QUIC_FT_CRYPTO); + len += ngx_quic_varint_len(crypto->offset); + len += ngx_quic_varint_len(crypto->len); + len += crypto->len; + + return len; } start = p;