<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http, branch release-1.17.7</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<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>
<entry>
<title>Saved some memory allocations.</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=be45a3aa590a5f7e64c6d55e8e0f78565adf4823'/>
<id>be45a3aa590a5f7e64c6d55e8e0f78565adf4823</id>
<content type='text'>
In configurations when "root" has variables, some modules unnecessarily
allocated memory for the "Location" header value.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In configurations when "root" has variables, some modules unnecessarily
allocated memory for the "Location" header value.
</pre>
</div>
</content>
</entry>
<entry>
<title>Dav: fixed Location in successful MKCOL response.</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=6dc0c880e5b94dc507795369196dec5c2f9d2cc2'/>
<id>6dc0c880e5b94dc507795369196dec5c2f9d2cc2</id>
<content type='text'>
Instead of reducing URI length to not include the terminating '\0'
character in 6ddaac3e0bf7, restore the terminating '/' character.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of reducing URI length to not include the terminating '\0'
character in 6ddaac3e0bf7, restore the terminating '/' character.
</pre>
</div>
</content>
</entry>
</feed>
