<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http, branch release-1.17.8</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>gRPC: variables support in the "grpc_pass" directive.</title>
<updated>2020-01-17T09:13:02+00:00</updated>
<author>
<name>Vladimir Homutov</name>
<email>vl@nginx.com</email>
</author>
<published>2020-01-17T09:13:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0e3b3b57357e37c80794fb0bcb4b929be96c9537'/>
<id>0e3b3b57357e37c80794fb0bcb4b929be96c9537</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: removed ngx_debug_point() call.</title>
<updated>2020-01-14T11:20:08+00:00</updated>
<author>
<name>Daniil Bondarev</name>
<email>bondarev@amazon.com</email>
</author>
<published>2020-01-14T11:20:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=60f648f035fa05667b9ccbbea1b3a60d83534d9a'/>
<id>60f648f035fa05667b9ccbbea1b3a60d83534d9a</id>
<content type='text'>
    
With the recent change to prevent frames flood in d4448892a294,
nginx will finalize the connection with NGX_HTTP_V2_INTERNAL_ERROR
whenever flood is detected, causing nginx aborting or stopping if
the debug_points directive is used in nginx config.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
    
With the recent change to prevent frames flood in d4448892a294,
nginx will finalize the connection with NGX_HTTP_V2_INTERNAL_ERROR
whenever flood is detected, causing nginx aborting or stopping if
the debug_points directive is used in nginx config.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: introduced separate handler to retry stream close.</title>
<updated>2019-12-23T18:25:21+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2019-12-23T18:25:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=810559665a704957431b387572af99a82039162a'/>
<id>810559665a704957431b387572af99a82039162a</id>
<content type='text'>
When ngx_http_v2_close_stream_handler() is used to retry stream close
after queued frames are sent, client timeouts on the stream can be
logged multiple times and/or in addition to already happened errors.
To resolve this, separate ngx_http_v2_retry_close_stream_handler()
was introduced, which does not try to log timeouts.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When ngx_http_v2_close_stream_handler() is used to retry stream close
after queued frames are sent, client timeouts on the stream can be
logged multiple times and/or in addition to already happened errors.
To resolve this, separate ngx_http_v2_retry_close_stream_handler()
was introduced, which does not try to log timeouts.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: fixed socket leak with queued frames (ticket #1689).</title>
<updated>2019-12-23T18:25:17+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2019-12-23T18:25:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=49709f75b262c483550cc826471839f624765ab1'/>
<id>49709f75b262c483550cc826471839f624765ab1</id>
<content type='text'>
If a stream is closed with queued frames, it is possible that no further
write events will occur on the stream, leading to the socket leak.
To fix this, the stream's fake connection read handler is set to
ngx_http_v2_close_stream_handler(), to make sure that finalizing the
connection with ngx_http_v2_finalize_connection() will be able to
close the stream regardless of the current number of queued frames.

Additionally, the stream's fake connection fc-&gt;error flag is explicitly
set, so ngx_http_v2_handle_stream() will post a write event when queued
frames are finally sent even if stream flow control window is exhausted.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a stream is closed with queued frames, it is possible that no further
write events will occur on the stream, leading to the socket leak.
To fix this, the stream's fake connection read handler is set to
ngx_http_v2_close_stream_handler(), to make sure that finalizing the
connection with ngx_http_v2_finalize_connection() will be able to
close the stream regardless of the current number of queued frames.

Additionally, the stream's fake connection fc-&gt;error flag is explicitly
set, so ngx_http_v2_handle_stream() will post a write event when queued
frames are finally sent even if stream flow control window is exhausted.
</pre>
</div>
</content>
</entry>
<entry>
<title>Dav: added checks for chunked to body presence conditions.</title>
<updated>2019-12-23T17:39:27+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2019-12-23T17:39:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=5e5fa2e9e57b713e445b1737005ff6a202bda8ad'/>
<id>5e5fa2e9e57b713e445b1737005ff6a202bda8ad</id>
<content type='text'>
These checks were missed when chunked support was introduced.  And also
added an explicit error message to ngx_http_dav_copy_move_handler()
(it was missed for some reason, in contrast to DELETE and MKCOL handlers).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These checks were missed when chunked support was introduced.  And also
added an explicit error message to ngx_http_dav_copy_move_handler()
(it was missed for some reason, in contrast to DELETE and MKCOL handlers).
</pre>
</div>
</content>
</entry>
<entry>
<title>Discard request body when redirecting to a URL via error_page.</title>
<updated>2019-12-23T12:45:46+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-12-23T12:45:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c1be55f97211d38b69ac0c2027e6812ab8b1b94e'/>
<id>c1be55f97211d38b69ac0c2027e6812ab8b1b94e</id>
<content type='text'>
Reported by Bert JW Regeer and Francisco Oca Gonzalez.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reported by Bert JW Regeer and Francisco Oca Gonzalez.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite: disallow empty replacements.</title>
<updated>2019-12-16T12:19:01+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-12-16T12:19:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=4c031f9a6a879bcc4e86f5b7d4177996c9bca4cd'/>
<id>4c031f9a6a879bcc4e86f5b7d4177996c9bca4cd</id>
<content type='text'>
While empty replacements were caught at run-time, parsing code
of the "rewrite" directive expects that a minimum length of the
"replacement" argument is 1.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While empty replacements were caught at run-time, parsing code
of the "rewrite" directive expects that a minimum length of the
"replacement" argument is 1.
</pre>
</div>
</content>
</entry>
<entry>
<title>Tolerate '\0' in URI when mapping URI to path.</title>
<updated>2019-12-16T12:19:01+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-12-16T12:19:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=a5895eb502747f396d3901a948834cd87d5fb0c3'/>
<id>a5895eb502747f396d3901a948834cd87d5fb0c3</id>
<content type='text'>
If a rewritten URI has the null character, only a part of URI was
copied to a memory buffer allocated for path.  In some setups this
could be exploited to expose uninitialized memory via the Location
header.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a rewritten URI has the null character, only a part of URI was
copied to a memory buffer allocated for path.  In some setups this
could be exploited to expose uninitialized memory via the Location
header.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite: fixed segfault with rewritten URI and "alias".</title>
<updated>2019-12-16T12:19:01+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-12-16T12:19:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=af8ea176a743e97d767b3e1439d549b52dd0367a'/>
<id>af8ea176a743e97d767b3e1439d549b52dd0367a</id>
<content type='text'>
The "alias" directive cannot be used in the same location where URI
was rewritten.  This has been detected in the "rewrite ... break"
case, but not when the standalone "break" directive was used.

This change also fixes proxy_pass with URI component in a similar
case:

       location /aaa/ {
           rewrite ^ /xxx/yyy;
           break;
           proxy_pass http://localhost:8080/bbb/;
       }

Previously, the "/bbb/yyy" would be sent to a backend instead of
"/xxx/yyy".  And if location's prefix was longer than the rewritten
URI, a segmentation fault might occur.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The "alias" directive cannot be used in the same location where URI
was rewritten.  This has been detected in the "rewrite ... break"
case, but not when the standalone "break" directive was used.

This change also fixes proxy_pass with URI component in a similar
case:

       location /aaa/ {
           rewrite ^ /xxx/yyy;
           break;
           proxy_pass http://localhost:8080/bbb/;
       }

Previously, the "/bbb/yyy" would be sent to a backend instead of
"/xxx/yyy".  And if location's prefix was longer than the rewritten
URI, a segmentation fault might occur.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed request finalization in ngx_http_index_handler().</title>
<updated>2019-12-16T12:19:01+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2019-12-16T12:19:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=48086f79ad7d9ac08943312f59215533330617d0'/>
<id>48086f79ad7d9ac08943312f59215533330617d0</id>
<content type='text'>
Returning 500 instead of NGX_ERROR is preferable here because
header has not yet been sent to the client.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Returning 500 instead of NGX_ERROR is preferable here because
header has not yet been sent to the client.
</pre>
</div>
</content>
</entry>
</feed>
