]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: dns: fix ring offset calculation on first read
authorAurelien DARRAGON <adarragon@haproxy.com>
Tue, 7 Mar 2023 16:45:02 +0000 (17:45 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 8 Mar 2023 07:56:30 +0000 (08:56 +0100)
commit5a43db2c5d33b9ec575b2faa4eb0921af234824d
tree0853f7d91434912c266fd51a2db28106349a4081
parent2c98867187805e90087fabd55ccec4a948cbd33c
BUG/MINOR: dns: fix ring offset calculation on first read

With 737d10f ("BUG/MEDIUM: dns: ensure ring offset is properly reajusted
to head") ring offset is now properly re-adjusted in dns_session_io_handler()
and dns_process_req().

But the previous patch does not cope well if the first read is performed
on a non-empty ring since relative ofs will be computed from ds->ofs=0 or
dss->ofs_req=0.
In this case: relative offset could become invalid since we mix up relative
offsets with absolute offsets.

To fix this, we apply the same logic performed in d9c7188 ("MEDIUM: ring:
make the offset relative to the head/tail instead of absolute") for the
cli_io_handler_show_ring() function: that is using b_peek_ofs(buf, 0) to
set the contextual offset instead of hard-coding it to 0.

This should be considered as a minor bugfix since this bug was discovered by
reading the code: 737d10f already survived a good amount of stress-tests as
shown in GH #2068.

No backport needed as 737d10f is not marked for backports.
src/dns.c