comparison src/event/ngx_event_quic_transport.c @ 7711: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
7710:d60205f37f5a 7711: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