Mercurial > hg > nginx
comparison src/event/ngx_event_quic_transport.c @ 8245:a14afe21e692 quic
Double MAX_STREAMS on STREAMS_BLOCKED.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Fri, 20 Mar 2020 10:14:58 +0300 |
parents | d60205f37f5a |
children | e9891e8ee975 |
comparison
equal
deleted
inserted
replaced
8244:d60205f37f5a | 8245:a14afe21e692 |
---|---|
64 | 64 |
65 static size_t ngx_quic_create_ack(u_char *p, ngx_quic_ack_frame_t *ack); | 65 static size_t ngx_quic_create_ack(u_char *p, ngx_quic_ack_frame_t *ack); |
66 static size_t ngx_quic_create_crypto(u_char *p, | 66 static size_t ngx_quic_create_crypto(u_char *p, |
67 ngx_quic_crypto_frame_t *crypto); | 67 ngx_quic_crypto_frame_t *crypto); |
68 static size_t ngx_quic_create_stream(u_char *p, ngx_quic_stream_frame_t *sf); | 68 static size_t ngx_quic_create_stream(u_char *p, ngx_quic_stream_frame_t *sf); |
69 static size_t ngx_quic_create_max_streams(u_char *p, | |
70 ngx_quic_max_streams_frame_t *ms); | |
69 static size_t ngx_quic_create_close(u_char *p, ngx_quic_close_frame_t *cl); | 71 static size_t ngx_quic_create_close(u_char *p, ngx_quic_close_frame_t *cl); |
70 | 72 |
71 | 73 |
72 /* literal errors indexed by corresponding value */ | 74 /* literal errors indexed by corresponding value */ |
73 static char *ngx_quic_errors[] = { | 75 static char *ngx_quic_errors[] = { |
819 return ngx_quic_create_stream(p, &f->u.stream); | 821 return ngx_quic_create_stream(p, &f->u.stream); |
820 | 822 |
821 case NGX_QUIC_FT_CONNECTION_CLOSE: | 823 case NGX_QUIC_FT_CONNECTION_CLOSE: |
822 return ngx_quic_create_close(p, &f->u.close); | 824 return ngx_quic_create_close(p, &f->u.close); |
823 | 825 |
826 case NGX_QUIC_FT_MAX_STREAMS: | |
827 return ngx_quic_create_max_streams(p, &f->u.max_streams); | |
828 | |
824 default: | 829 default: |
825 /* BUG: unsupported frame type generated */ | 830 /* BUG: unsupported frame type generated */ |
826 return NGX_ERROR; | 831 return NGX_ERROR; |
827 } | 832 } |
828 } | 833 } |
933 return p - start; | 938 return p - start; |
934 } | 939 } |
935 | 940 |
936 | 941 |
937 static size_t | 942 static size_t |
943 ngx_quic_create_max_streams(u_char *p, ngx_quic_max_streams_frame_t *ms) | |
944 { | |
945 size_t len; | |
946 u_char *start; | |
947 ngx_uint_t type; | |
948 | |
949 type = ms->bidi ? NGX_QUIC_FT_MAX_STREAMS : NGX_QUIC_FT_MAX_STREAMS2; | |
950 | |
951 if (p == NULL) { | |
952 len = ngx_quic_varint_len(type); | |
953 len += ngx_quic_varint_len(ms->limit); | |
954 return len; | |
955 } | |
956 | |
957 start = p; | |
958 | |
959 ngx_quic_build_int(&p, type); | |
960 ngx_quic_build_int(&p, ms->limit); | |
961 | |
962 return p - start; | |
963 } | |
964 | |
965 | |
966 static size_t | |
938 ngx_quic_create_close(u_char *p, ngx_quic_close_frame_t *cl) | 967 ngx_quic_create_close(u_char *p, ngx_quic_close_frame_t *cl) |
939 { | 968 { |
940 size_t len; | 969 size_t len; |
941 u_char *start; | 970 u_char *start; |
942 | 971 |