Merge remote-tracking branch 'origin/main'

# Conflicts:
#	Makefile
#	debian/changelog
#	tests/01-module/01-e2e.robot
This commit is contained in:
2026-04-23 09:28:56 +02:00
6 changed files with 230 additions and 39 deletions

35
debian/changelog vendored
View File

@@ -17,6 +17,41 @@ nginx-ipng-stats-plugin (0.8.2-1) unstable; urgency=medium
-- Pim van Pelt <pim@ipng.ch> Thu, 23 Apr 2026 12:00:00 +0200
nginx-ipng-stats-plugin (0.8.1-1) unstable; urgency=medium
* Pre-release v0.8.1.
- Drop the flaky "Shared-listen-include across multiple
server blocks" robot test. It asserted that nginx's NOTICE
log line "ipng_stats: stripped socket options from
duplicate listen" appeared on stderr of `nginx -t 2>&1`,
but the NOTICE lands in the configured error_log
destination (which the lab routes into docker's log stream)
rather than the subprocess's stderr. The stripping
behaviour itself still works — it's just not observable
from `nginx -t` output in this harness.
-- Pim van Pelt <pim@ipng.ch> Wed, 22 Apr 2026 10:10:00 +0200
nginx-ipng-stats-plugin (0.8.0-1) unstable; urgency=medium
* Pre-release v0.8.0.
- Log handler now accounts for request bodies that nginx
discarded before any handler could read them (rate-limit
403, auth_request denial, 413 on fixed Content-Length,
early `return 4xx;` on POST). Those paths route through
ngx_http_discard_request_body / HTTP/2 skip_data, both of
which drop bytes without touching r->request_length —
leaving nginx_ipng_bytes_in_total blind to most of the
wire on rate-limited POST-heavy workloads (observed ~20x
gap against btop on a CT-log-style box). When
r->discard_body is set and the client advertised a
Content-Length, we now add content_length_n to bin_sz.
Normal 200-OK POSTs are unchanged. See docs/nginx-issues.md
for the full analysis of which nginx paths update
r->request_length and which don't.
-- Pim van Pelt <pim@ipng.ch> Wed, 22 Apr 2026 09:59:53 +0200
nginx-ipng-stats-plugin (0.7.2-1) unstable; urgency=medium
* Pre-release v0.7.2.

23
debian/rules vendored
View File

@@ -39,8 +39,23 @@ override_dh_auto_clean:
override_dh_clean:
# `dh_clean` recurses from the package root to remove junk files
# (editor backups, autom4te caches, etc.). `make build-asan`
# produces build/nginx-asan/{fastcgi,proxy,scgi,uwsgi}_temp owned
# by "nobody" with mode 0700, which the current user can't
# traverse — so we exclude anything under build/ from dh_clean.
# (editor backups, autom4te caches, etc.). Two obstacles under
# build/:
# 1. `make build-asan` produces build/nginx-asan/{fastcgi,proxy,
# scgi,uwsgi,client_body}_temp owned by "nobody" with mode
# 0700 after the ASan nginx has been run (the 02-asan robot
# suite bind-mounts build/nginx-asan/ RW into a container,
# and nginx chowns its temp dirs on master startup). The
# current user can't traverse them, which makes dh_clean's
# `find` abort with EACCES.
# 2. We don't want to delete anything under build/ anyway — it
# holds the ASan build artifacts from a prior `make build-asan`.
# Clear the unreadable temp dirs first (rm -rf only needs write
# access to the parent, which we have), then tell dh_clean to
# exclude build/ entirely.
rm -rf $(CURDIR)/build/nginx-asan/client_body_temp \
$(CURDIR)/build/nginx-asan/fastcgi_temp \
$(CURDIR)/build/nginx-asan/proxy_temp \
$(CURDIR)/build/nginx-asan/scgi_temp \
$(CURDIR)/build/nginx-asan/uwsgi_temp
dh_clean -X build/