<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src, branch release-1.30.0</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>Stable branch</title>
<updated>2026-04-14T13:10:11+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2026-04-14T09:25:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=bc4f7d78e1f3b275e74fa870516a97bca8f9bf28'/>
<id>bc4f7d78e1f3b275e74fa870516a97bca8f9bf28</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: reset early_hints_length on upstream reinit.</title>
<updated>2026-04-06T16:59:00+00:00</updated>
<author>
<name>David Carlier</name>
<email>devnexen@gmail.com</email>
</author>
<published>2026-03-15T15:56:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=1709bffe6ebb5bfd4d71893d65920fdc4bf82f65'/>
<id>1709bffe6ebb5bfd4d71893d65920fdc4bf82f65</id>
<content type='text'>
When a request was retried to a new upstream after receiving 103
Early Hints from the previous one, the accumulated early_hints_length
was not reset, causing valid early hints from the next upstream to be
incorrectly rejected as "too big".
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a request was retried to a new upstream after receiving 103
Early Hints from the previous one, the accumulated early_hints_length
was not reset, causing valid early hints from the next upstream to be
incorrectly rejected as "too big".
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix $request_port and $is_request_port in subrequests</title>
<updated>2026-04-06T10:53:54+00:00</updated>
<author>
<name>Zoey</name>
<email>zoey@z0ey.de</email>
</author>
<published>2026-04-05T09:31:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=067d766f210ee914b750d79d9284cbf8801058f3'/>
<id>067d766f210ee914b750d79d9284cbf8801058f3</id>
<content type='text'>
Closes #1247.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closes #1247.
</pre>
</div>
</content>
</entry>
<entry>
<title>Added max_headers directive.</title>
<updated>2026-04-06T10:08:36+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2024-05-23T21:20:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=365694160a85229a7cb006738de9260d49ff5fa2'/>
<id>365694160a85229a7cb006738de9260d49ff5fa2</id>
<content type='text'>
The directive limits the number of request headers accepted from clients.
While the total amount of headers is believed to be sufficiently limited
by the existing buffer size limits (client_header_buffer_size and
large_client_header_buffers), the additional limit on the number of headers
might be beneficial to better protect backend servers.

Requested by Maksim Yevmenkin.

Signed-off-by: Elijah Zupancic &lt;e.zupancic@f5.com&gt;
Origin: &lt;https://freenginx.org/hg/nginx/rev/199dc0d6b05be814b5c811876c20af58cd361fea&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The directive limits the number of request headers accepted from clients.
While the total amount of headers is believed to be sufficiently limited
by the existing buffer size limits (client_header_buffer_size and
large_client_header_buffers), the additional limit on the number of headers
might be beneficial to better protect backend servers.

Requested by Maksim Yevmenkin.

Signed-off-by: Elijah Zupancic &lt;e.zupancic@f5.com&gt;
Origin: &lt;https://freenginx.org/hg/nginx/rev/199dc0d6b05be814b5c811876c20af58cd361fea&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: fix integer underflow in charset parsing</title>
<updated>2026-04-06T10:07:18+00:00</updated>
<author>
<name>David Korczynski</name>
<email>david@adalogics.com</email>
</author>
<published>2026-03-04T09:27:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=06c30ec29d392af00157c0b0eecbc545b330e50f'/>
<id>06c30ec29d392af00157c0b0eecbc545b330e50f</id>
<content type='text'>
The issue described below was only reproducible prior to
https://github.com/nginx/nginx/commit/7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7

When parsing the `charset` parameter in the `Content-Type` header within
`ngx_http_upstream_copy_content_type`, an input such as `charset="`
resulted in an integer underflow.

In this scenario, both `p` and `last` point to the position immediately
following the opening quote. The logic to strip a trailing quote checked
`*(last - 1)` without verifying that `last &gt; p`. This caused `last` to
be decremented to point to the opening quote itself, making `last &lt; p`.

The subsequent length calculation `r-&gt;headers_out.charset.len = last - p`
resulted in -1, which wrapped to `SIZE_MAX` as `len` is a `size_t`. This
invalid length was later passed to `ngx_cpymem` in `ngx_http_header_filter`,
leading to an out-of-bounds memory access (detected as
`negative-size-param` by AddressSanitizer).

The fix ensures `last &gt; p` before attempting to strip a trailing quote,
correctly resulting in a zero-length charset for malformed input.

The oss-fuzz payload that triggers this issue holds multiple 103 status
lines, and it's a sequence of 2 of those Content-Type headers that
trigger the ASAN report.

Co-authored-by: CodeMender &lt;codemender-patching@google.com&gt;
Fixes: https://issues.oss-fuzz.com/issues/486561029

Signed-off-by: David Korczynski &lt;david@adalogics.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The issue described below was only reproducible prior to
https://github.com/nginx/nginx/commit/7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7

When parsing the `charset` parameter in the `Content-Type` header within
`ngx_http_upstream_copy_content_type`, an input such as `charset="`
resulted in an integer underflow.

In this scenario, both `p` and `last` point to the position immediately
following the opening quote. The logic to strip a trailing quote checked
`*(last - 1)` without verifying that `last &gt; p`. This caused `last` to
be decremented to point to the opening quote itself, making `last &lt; p`.

The subsequent length calculation `r-&gt;headers_out.charset.len = last - p`
resulted in -1, which wrapped to `SIZE_MAX` as `len` is a `size_t`. This
invalid length was later passed to `ngx_cpymem` in `ngx_http_header_filter`,
leading to an out-of-bounds memory access (detected as
`negative-size-param` by AddressSanitizer).

The fix ensures `last &gt; p` before attempting to strip a trailing quote,
correctly resulting in a zero-length charset for malformed input.

The oss-fuzz payload that triggers this issue holds multiple 103 status
lines, and it's a sequence of 2 of those Content-Type headers that
trigger the ASAN report.

Co-authored-by: CodeMender &lt;codemender-patching@google.com&gt;
Fixes: https://issues.oss-fuzz.com/issues/486561029

Signed-off-by: David Korczynski &lt;david@adalogics.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Removed CLOCK_MONOTONIC_FAST support.</title>
<updated>2026-04-03T18:57:21+00:00</updated>
<author>
<name>Eugene Grebenschikov</name>
<email>e.grebenshchikov@f5.com</email>
</author>
<published>2026-04-01T18:03:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=2ff1a969f3040f27ac2610e9840a4e802bcc39cc'/>
<id>2ff1a969f3040f27ac2610e9840a4e802bcc39cc</id>
<content type='text'>
CLOCK_MONOTONIC_FAST, like CLOCK_MONOTONIC_COARSE, has low accuracy. It
shows noticeable timing variation for short intervals, which is visible
in metrics like $upstream_response_time for fast upstream responses.
This change complements the work started in commit f29d7ade5.
In addition to the reasons described in f29d7ade5, the performance of
CLOCK_MONOTONIC is good enough on modern hardware when using a TSC
timecounter. This is especially true when it is accessed through a
shared page, as implemented in FreeBSD 10.0 (see git commits
869fd80fd449 and aea810386d8e for details).

Co-authored-by: Sergey Kandaurov &lt;pluknet@nginx.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CLOCK_MONOTONIC_FAST, like CLOCK_MONOTONIC_COARSE, has low accuracy. It
shows noticeable timing variation for short intervals, which is visible
in metrics like $upstream_response_time for fast upstream responses.
This change complements the work started in commit f29d7ade5.
In addition to the reasons described in f29d7ade5, the performance of
CLOCK_MONOTONIC is good enough on modern hardware when using a TSC
timecounter. This is especially true when it is accessed through a
shared page, as implemented in FreeBSD 10.0 (see git commits
869fd80fd449 and aea810386d8e for details).

Co-authored-by: Sergey Kandaurov &lt;pluknet@nginx.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: fixed processing multiple 103 (early hints) responses.</title>
<updated>2026-04-02T16:54:32+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2026-04-02T13:41:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7'/>
<id>7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7</id>
<content type='text'>
The second 103 response in a row was treated as the final response header.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The second 103 response in a row was treated as the final response header.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: compatibility with OpenSSL 4.0.</title>
<updated>2026-03-31T08:32:19+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2026-03-10T12:28:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0d025b4a9483b18237243c0aaf9b8d4201aebcd8'/>
<id>0d025b4a9483b18237243c0aaf9b8d4201aebcd8</id>
<content type='text'>
X509_get_issuer_name() and X509_get_subject_name() were changed to return
a const value.  Since it is passed to functions with a non const argument
in older versions, the const modifier is conditionally compiled as needed.

ASN1_INTEGER was made opaque.  ASN1_STRING accessors are used to preserve
the behaviour.  ASN1_STRING_get0_data() compat shim is provided for OpenSSL
&lt; 1.1.0 where it does not exist.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
X509_get_issuer_name() and X509_get_subject_name() were changed to return
a const value.  Since it is passed to functions with a non const argument
in older versions, the const modifier is conditionally compiled as needed.

ASN1_INTEGER was made opaque.  ASN1_STRING accessors are used to preserve
the behaviour.  ASN1_STRING_get0_data() compat shim is provided for OpenSSL
&lt; 1.1.0 where it does not exist.
</pre>
</div>
</content>
</entry>
<entry>
<title>Version bump.</title>
<updated>2026-03-31T08:32:19+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2026-03-30T15:26:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=390767e6ec87e4957a1da6ba631790ff7e54fd3e'/>
<id>390767e6ec87e4957a1da6ba631790ff7e54fd3e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed the "include" directive inside the "geo" block.</title>
<updated>2026-03-24T18:20:16+00:00</updated>
<author>
<name>Eugene Grebenschikov</name>
<email>e.grebenshchikov@f5.com</email>
</author>
<published>2026-03-12T00:57:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0de6e878ba43b55dd23b437c5be1819a55f63ec4'/>
<id>0de6e878ba43b55dd23b437c5be1819a55f63ec4</id>
<content type='text'>
The "include" directive should be able to include multiple files if
given a filename mask.

Completes remaining changes introduced in da4ffd8.

Closes: https://github.com/nginx/nginx/issues/1165
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The "include" directive should be able to include multiple files if
given a filename mask.

Completes remaining changes introduced in da4ffd8.

Closes: https://github.com/nginx/nginx/issues/1165
</pre>
</div>
</content>
</entry>
</feed>
