Mercurial > hg > nginx
comparison src/event/quic/ngx_event_quic_frames.c @ 9014:8d11e2171697 quic
QUIC: optimize insertion at the end of QUIC buffer.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Mon, 14 Feb 2022 14:54:34 +0300 |
parents | b5656025ddb5 |
children | 55b38514729b |
comparison
equal
deleted
inserted
replaced
9013:b5656025ddb5 | 9014:8d11e2171697 |
---|---|
419 | 419 |
420 limit -= n; | 420 limit -= n; |
421 qb->offset += n; | 421 qb->offset += n; |
422 } | 422 } |
423 | 423 |
424 if (qb->offset >= qb->last_offset) { | |
425 qb->last_chain = NULL; | |
426 } | |
427 | |
424 qb->chain = *ll; | 428 qb->chain = *ll; |
425 *ll = NULL; | 429 *ll = NULL; |
426 | 430 |
427 return out; | 431 return out; |
428 } | 432 } |
460 } | 464 } |
461 | 465 |
462 if (qb->chain == NULL) { | 466 if (qb->chain == NULL) { |
463 qb->offset = offset; | 467 qb->offset = offset; |
464 } | 468 } |
469 | |
470 if (qb->offset >= qb->last_offset) { | |
471 qb->last_chain = NULL; | |
472 } | |
465 } | 473 } |
466 | 474 |
467 | 475 |
468 ngx_chain_t * | 476 ngx_chain_t * |
469 ngx_quic_alloc_chain(ngx_connection_t *c) | 477 ngx_quic_alloc_chain(ngx_connection_t *c) |
491 u_char *p; | 499 u_char *p; |
492 uint64_t n, base; | 500 uint64_t n, base; |
493 ngx_buf_t *b; | 501 ngx_buf_t *b; |
494 ngx_chain_t *cl, **chain; | 502 ngx_chain_t *cl, **chain; |
495 | 503 |
496 base = qb->offset; | 504 if (qb->last_chain && offset >= qb->last_offset) { |
497 chain = &qb->chain; | 505 base = qb->last_offset; |
506 chain = qb->last_chain; | |
507 | |
508 } else { | |
509 base = qb->offset; | |
510 chain = &qb->chain; | |
511 } | |
498 | 512 |
499 while (in && limit) { | 513 while (in && limit) { |
500 | 514 |
501 if (offset < base) { | 515 if (offset < base) { |
502 n = ngx_min((uint64_t) (in->buf->last - in->buf->pos), | 516 n = ngx_min((uint64_t) (in->buf->last - in->buf->pos), |
582 } | 596 } |
583 | 597 |
584 b->sync = 0; | 598 b->sync = 0; |
585 } | 599 } |
586 } | 600 } |
601 | |
602 qb->last_offset = base; | |
603 qb->last_chain = chain; | |
587 | 604 |
588 return in; | 605 return in; |
589 } | 606 } |
590 | 607 |
591 | 608 |