view auto/lib/pcre/makefile.bcc @ 9007:2dc4203d812c quic

QUIC: fixed in-flight bytes accounting. Initially, frames are genereated and stored in ctx->frames. Next, ngx_quic_output() collects frames to be sent in in ctx->sending. On failure, ngx_quic_revert_sned() returns frames into ctx->frames. On success, the ngx_quic_commit_send() moves ack-eliciting frames into ctx->sent and frees non-ack-eliciting frames. This function also updates in-flight bytes counter, so only actually sent frames are accounted. The counter is decremented in the following cases: - acknowledgment is received - packet was declared lost - we are discarding context completely In each of this cases frame is removed from ctx->sent queue and in-flight counter is accordingly decremented. The patch fixes the case of discarding context - only removing frames from ctx->sent must be followed by in-flight bytes counter decrement, otherwise cg->in_flight could experience type underflow. The issue appeared in b1676cd64dc9.
author Vladimir Homutov <vl@nginx.com>
date Wed, 09 Feb 2022 15:51:42 +0300
parents 2fda9065d0f4
children
line wrap: on
line source


# Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.


CFLAGS =	-q -O2 -tWM -w-8004 $(CPU_OPT)
PCREFLAGS =	-DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \
		-DSUPPORT_PCRE8 -DHAVE_MEMMOVE


pcre.lib:
	cd $(PCRE)

	bcc32 -c $(CFLAGS) -I. $(PCREFLAGS) pcre_*.c

	copy /y nul pcre.lst
	for %n in (*.obj) do @echo +%n ^^& >> pcre.lst
	echo + >> pcre.lst

	tlib pcre.lib @pcre.lst

pcre.h:
	cd $(PCRE)

	copy /y pcre.h.generic pcre.h
	copy /y config.h.generic config.h
	copy /y pcre_chartables.c.dist pcre_chartables.c