<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git, branch release-1.21.2</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>nginx-1.21.2-RELEASE</title>
<updated>2021-08-31T15:13:46+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-31T15:13:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=d16245213a7072ff14f050bff227b75d59c49bec'/>
<id>d16245213a7072ff14f050bff227b75d59c49bec</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Updated OpenSSL used for win32 builds.</title>
<updated>2021-08-31T14:54:54+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-31T14:54:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7e1667ca753a7c73c6f7371eb2c0a9153280953f'/>
<id>7e1667ca753a7c73c6f7371eb2c0a9153280953f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: avoid memcpy() with NULL source and zero length.</title>
<updated>2021-08-31T13:44:13+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-31T13:44:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=15bf6d8cc950d3aec2d1c3152b39f62be4939025'/>
<id>15bf6d8cc950d3aec2d1c3152b39f62be4939025</id>
<content type='text'>
Prodded by Clang Static Analyzer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Prodded by Clang Static Analyzer.
</pre>
</div>
</content>
</entry>
<entry>
<title>Give GCC atomics precedence over deprecated Darwin atomic(3).</title>
<updated>2021-08-30T11:45:21+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2021-08-30T11:45:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=1e8c0d4e0673f50863230eda989867d3012fb349'/>
<id>1e8c0d4e0673f50863230eda989867d3012fb349</id>
<content type='text'>
This allows to build nginx on macOS with -Wdeprecated-declarations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows to build nginx on macOS with -Wdeprecated-declarations.
</pre>
</div>
</content>
</entry>
<entry>
<title>Request body: reading body buffering in filters.</title>
<updated>2021-08-29T19:22:02+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-29T19:22:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=67d160bf25e02ba6679bb6c3b9cbdfeb29b759de'/>
<id>67d160bf25e02ba6679bb6c3b9cbdfeb29b759de</id>
<content type='text'>
If a filter wants to buffer the request body during reading (for
example, to check an external scanner), it can now do so.  To make
it possible, the code now checks rb-&gt;last_saved (introduced in the
previous change) along with rb-&gt;rest == 0.

Since in HTTP/2 this requires flow control to avoid overflowing the
request body buffer, so filters which need buffering have to set
the rb-&gt;filter_need_buffering flag on the first filter call.  (Note
that each filter is expected to call the next filter, so all filters
will be able set the flag if needed.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a filter wants to buffer the request body during reading (for
example, to check an external scanner), it can now do so.  To make
it possible, the code now checks rb-&gt;last_saved (introduced in the
previous change) along with rb-&gt;rest == 0.

Since in HTTP/2 this requires flow control to avoid overflowing the
request body buffer, so filters which need buffering have to set
the rb-&gt;filter_need_buffering flag on the first filter call.  (Note
that each filter is expected to call the next filter, so all filters
will be able set the flag if needed.)
</pre>
</div>
</content>
</entry>
<entry>
<title>Request body: introduced rb-&gt;last_saved flag.</title>
<updated>2021-08-29T19:21:03+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-29T19:21:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=2a709213800fd3fd2809881374eb110562b53c08'/>
<id>2a709213800fd3fd2809881374eb110562b53c08</id>
<content type='text'>
It indicates that the last buffer was received by the save filter,
and can be used to check this at higher levels.  To be used in the
following changes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It indicates that the last buffer was received by the save filter,
and can be used to check this at higher levels.  To be used in the
following changes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Request body: added alert to catch duplicate body saving.</title>
<updated>2021-08-29T19:20:54+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-29T19:20:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=fd9d43b087b4247f8cb5f91845be46bd624c175a'/>
<id>fd9d43b087b4247f8cb5f91845be46bd624c175a</id>
<content type='text'>
If due to an error ngx_http_request_body_save_filter() is called
more than once with rb-&gt;rest == 0, this used to result in a segmentation
fault.  Added an alert to catch such errors, just in case.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If due to an error ngx_http_request_body_save_filter() is called
more than once with rb-&gt;rest == 0, this used to result in a segmentation
fault.  Added an alert to catch such errors, just in case.
</pre>
</div>
</content>
</entry>
<entry>
<title>Request body: missing comments about initialization.</title>
<updated>2021-08-29T19:20:49+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-29T19:20:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=aa02695f5ea70f6628317b56f93e7e8733d4a029'/>
<id>aa02695f5ea70f6628317b56f93e7e8733d4a029</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: improved handling of preread unbuffered requests.</title>
<updated>2021-08-29T19:20:44+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-29T19:20:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=2862eb40e86190bf4d337a6483150f4385fb5358'/>
<id>2862eb40e86190bf4d337a6483150f4385fb5358</id>
<content type='text'>
Previously, fully preread unbuffered requests larger than client body
buffer size were saved to disk, despite the fact that "unbuffered" is
expected to imply no disk buffering.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, fully preread unbuffered requests larger than client body
buffer size were saved to disk, despite the fact that "unbuffered" is
expected to imply no disk buffering.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: improved handling of END_STREAM in a separate DATA frame.</title>
<updated>2021-08-29T19:20:38+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2021-08-29T19:20:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9f90d11cf52ccb0a8d086525aa7e4218d31d529a'/>
<id>9f90d11cf52ccb0a8d086525aa7e4218d31d529a</id>
<content type='text'>
The save body filter saves the request body to disk once the buffer is full.
Yet in HTTP/2 this might happen even if there is no need to save anything
to disk, notably when content length is known and the END_STREAM flag is
sent in a separate empty DATA frame.  Workaround is to provide additional
byte in the buffer, so saving the request body won't be triggered.

This fixes unexpected request body disk buffering in HTTP/2 observed after
the previous change when content length is known and the END_STREAM flag
is sent in a separate empty DATA frame.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The save body filter saves the request body to disk once the buffer is full.
Yet in HTTP/2 this might happen even if there is no need to save anything
to disk, notably when content length is known and the END_STREAM flag is
sent in a separate empty DATA frame.  Workaround is to provide additional
byte in the buffer, so saving the request body won't be triggered.

This fixes unexpected request body disk buffering in HTTP/2 observed after
the previous change when content length is known and the END_STREAM flag
is sent in a separate empty DATA frame.
</pre>
</div>
</content>
</entry>
</feed>
