diff options
author | Vladimir Homutov <vl@nginx.com> | 2020-03-12 14:23:27 +0300 |
---|---|---|
committer | Vladimir Homutov <vl@nginx.com> | 2020-03-12 14:23:27 +0300 |
commit | 21eaac9a3e771af3b230198b44c199f1345eb1cc (patch) | |
tree | a2728917ebde479378845a6ab906409bb284c19d /src | |
parent | 4f4f56f013eb0dbe5eb66bb2f22584aec26b13e6 (diff) | |
download | nginx-21eaac9a3e771af3b230198b44c199f1345eb1cc.tar.gz nginx-21eaac9a3e771af3b230198b44c199f1345eb1cc.zip |
Removed hardcoded CRYPTO and ACK frame sizes.
Diffstat (limited to 'src')
-rw-r--r-- | src/event/ngx_event_quic.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c index 2b6d4423c..9849d07d2 100644 --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -591,8 +591,18 @@ ngx_quic_send_packet(ngx_connection_t *c, ngx_quic_connection_t *qc, 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 @@ ngx_quic_create_ack(u_char *p, ngx_quic_ack_frame_t *ack) 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; |