comparison src/http/v3/ngx_http_v3_parse.c @ 8552:351d62300832 quic

HTTP/3: rearranged length check when parsing header. The new code looks simpler and is similar to other checks.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 16 Sep 2020 20:21:03 +0100
parents 234e9d89ff7f
children 279ad36f2f4b
comparison
equal deleted inserted replaced
8551:5a794d2452ef 8552:351d62300832
210 if (st->type != NGX_HTTP_V3_FRAME_HEADERS) { 210 if (st->type != NGX_HTTP_V3_FRAME_HEADERS) {
211 st->state = st->length > 0 ? sw_skip : sw_type; 211 st->state = st->length > 0 ? sw_skip : sw_type;
212 break; 212 break;
213 } 213 }
214 214
215 if (st->length == 0) {
216 return NGX_HTTP_V3_ERR_FRAME_ERROR;
217 }
218
215 st->state = sw_prefix; 219 st->state = sw_prefix;
216 break; 220 break;
217 221
218 case sw_skip: 222 case sw_skip:
219 223
223 227
224 break; 228 break;
225 229
226 case sw_prefix: 230 case sw_prefix:
227 231
228 if (st->length-- == 0) { 232 if (--st->length == 0) {
229 return NGX_HTTP_V3_ERR_FRAME_ERROR; 233 return NGX_HTTP_V3_ERR_FRAME_ERROR;
230 } 234 }
231 235
232 rc = ngx_http_v3_parse_header_block_prefix(c, &st->prefix, ch); 236 rc = ngx_http_v3_parse_header_block_prefix(c, &st->prefix, ch);
233 if (rc != NGX_DONE) { 237 if (rc != NGX_DONE) {
234 return rc; 238 return rc;
235 }
236
237 if (st->length == 0) {
238 return NGX_HTTP_V3_ERR_FRAME_ERROR;
239 } 239 }
240 240
241 st->state = sw_verify; 241 st->state = sw_verify;
242 break; 242 break;
243 243