<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git, branch release-1.17.4</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>nginx-1.17.4-RELEASE</title>
<updated>2019-09-24T15:08:48+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2019-09-24T15:08:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=88d2cb8a22f6a6e80bcf27399d774224a4f3497d'/>
<id>88d2cb8a22f6a6e80bcf27399d774224a4f3497d</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>2019-09-24T13:30:03+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2019-09-24T13:30:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=2079d3c2b27c5fd3eb1c7ba8489ad289d6fe391c'/>
<id>2079d3c2b27c5fd3eb1c7ba8489ad289d6fe391c</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: fixed worker_shutdown_timeout.</title>
<updated>2019-09-23T12:45:36+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-09-23T12:45:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=6052881a987fc5cd39c8666a9b39ddfeadc895ee'/>
<id>6052881a987fc5cd39c8666a9b39ddfeadc895ee</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: fixed possible alert about left open socket on shutdown.</title>
<updated>2019-09-23T12:45:32+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-09-23T12:45:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=f878492af35224a4ade84f6f6c15aca2892d3821'/>
<id>f878492af35224a4ade84f6f6c15aca2892d3821</id>
<content type='text'>
This could happen when graceful shutdown configured by worker_shutdown_timeout
times out and is then followed by another timeout such as proxy_read_timeout.
In this case, the HEADERS frame is added to the output queue, but attempt to
send it fails (due to c-&gt;error forcibly set during graceful shutdown timeout).
This triggers request finalization which attempts to close the stream.  But the
stream cannot be closed because there is a frame in the output queue, and the
connection cannot be finalized.  This leaves the connection open without any
timer events leading to alert.

The fix is to post write event when sending output queue fails on c-&gt;error.
That will finalize the connection.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This could happen when graceful shutdown configured by worker_shutdown_timeout
times out and is then followed by another timeout such as proxy_read_timeout.
In this case, the HEADERS frame is added to the output queue, but attempt to
send it fails (due to c-&gt;error forcibly set during graceful shutdown timeout).
This triggers request finalization which attempts to close the stream.  But the
stream cannot be closed because there is a frame in the output queue, and the
connection cannot be finalized.  This leaves the connection open without any
timer events leading to alert.

The fix is to post write event when sending output queue fails on c-&gt;error.
That will finalize the connection.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: traffic-based flood detection.</title>
<updated>2019-09-18T17:28:12+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2019-09-18T17:28:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=af0e284b967d0ecff1abcdce6558ed4635e3e757'/>
<id>af0e284b967d0ecff1abcdce6558ed4635e3e757</id>
<content type='text'>
With this patch, all traffic over an HTTP/2 connection is counted in
the h2c-&gt;total_bytes field, and payload traffic is counted in
the h2c-&gt;payload_bytes field.  As long as total traffic is many times
larger than payload traffic, we consider this to be a flood.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With this patch, all traffic over an HTTP/2 connection is counted in
the h2c-&gt;total_bytes field, and payload traffic is counted in
the h2c-&gt;payload_bytes field.  As long as total traffic is many times
larger than payload traffic, we consider this to be a flood.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: switched back to RST_STREAM with NO_ERROR.</title>
<updated>2019-09-18T17:28:09+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2019-09-18T17:28:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=4d4201fafd46bb97c29a9c86733331d8e7479f54'/>
<id>4d4201fafd46bb97c29a9c86733331d8e7479f54</id>
<content type='text'>
In 8df664ebe037, we've switched to maximizing stream window instead
of sending RST_STREAM.  Since then handling of RST_STREAM with NO_ERROR
was fixed at least in Chrome, hence we switch back to using RST_STREAM.

This allows more effective rejecting of large bodies, and also minimizes
non-payload traffic to be accounted in the next patch.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In 8df664ebe037, we've switched to maximizing stream window instead
of sending RST_STREAM.  Since then handling of RST_STREAM with NO_ERROR
was fixed at least in Chrome, hence we switch back to using RST_STREAM.

This allows more effective rejecting of large bodies, and also minimizes
non-payload traffic to be accounted in the next patch.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: fixed ssl_verify_client error message.</title>
<updated>2019-09-16T16:26:42+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2019-09-16T16:26:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=555dc61b543bb1fbc50f45b58a422f519d7065ce'/>
<id>555dc61b543bb1fbc50f45b58a422f519d7065ce</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Resolver: fixed possible use-after-free while resolving PTR.</title>
<updated>2019-09-10T12:42:34+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2019-09-10T12:42:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=4cd1dd28ddd91a15720febc491917da5ba16dbe6'/>
<id>4cd1dd28ddd91a15720febc491917da5ba16dbe6</id>
<content type='text'>
Previously, if a response to the PTR request was cached, and ngx_resolver_dup()
failed to allocate memory for the resulting name, then the original node was
freed but left in expire_queue.  A subsequent address resolving would end up
in a use-after-free memory access of the node either in ngx_resolver_expire()
or ngx_resolver_process_ptr(), when accessing it through expire_queue.

The fix is to leave the resolver node intact.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, if a response to the PTR request was cached, and ngx_resolver_dup()
failed to allocate memory for the resulting name, then the original node was
freed but left in expire_queue.  A subsequent address resolving would end up
in a use-after-free memory access of the node either in ngx_resolver_expire()
or ngx_resolver_process_ptr(), when accessing it through expire_queue.

The fix is to leave the resolver node intact.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: close connection on zero WINDOW_UPDATE.</title>
<updated>2019-09-10T12:33:38+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-09-10T12:33:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c3f8098712d16e17a6577e203a8c0dc76331a1ee'/>
<id>c3f8098712d16e17a6577e203a8c0dc76331a1ee</id>
<content type='text'>
Don't waste server resources by sending RST_STREAM frames.  Instead,
reject WINDOW_UPDATE frames with invalid zero increment by closing
connection with PROTOCOL_ERROR.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't waste server resources by sending RST_STREAM frames.  Instead,
reject WINDOW_UPDATE frames with invalid zero increment by closing
connection with PROTOCOL_ERROR.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: close connection on frames with self-dependency.</title>
<updated>2019-09-10T12:33:37+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-09-10T12:33:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=456e213904f36765fb638895a1530996cea28954'/>
<id>456e213904f36765fb638895a1530996cea28954</id>
<content type='text'>
Don't waste server resources by sending RST_STREAM frames.  Instead,
reject HEADERS and PRIORITY frames with self-dependency by closing
connection with PROTOCOL_ERROR.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't waste server resources by sending RST_STREAM frames.  Instead,
reject HEADERS and PRIORITY frames with self-dependency by closing
connection with PROTOCOL_ERROR.
</pre>
</div>
</content>
</entry>
</feed>
