<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http, branch release-1.10.0</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>HTTP/2: send the output queue after emitting WINDOW_UPDATE.</title>
<updated>2016-04-19T14:38:49+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2016-04-19T14:38:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=22285687c9abac86b91a76b22ef03380f647b29a'/>
<id>22285687c9abac86b91a76b22ef03380f647b29a</id>
<content type='text'>
The WINDOW_UPDATE frame could be left in the output queue for an indefinite
period of time resulting in the request timeout.

This might happen if reading of the body was triggered by an event unrelated
to client connection, e.g. by the limit_req timer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The WINDOW_UPDATE frame could be left in the output queue for an indefinite
period of time resulting in the request timeout.

This might happen if reading of the body was triggered by an event unrelated
to client connection, e.g. by the limit_req timer.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: skip data frames in case of internal errors.</title>
<updated>2016-04-19T14:38:49+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2016-04-19T14:38:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7458f6667530aef24272e5b5dc8815c27b35b05f'/>
<id>7458f6667530aef24272e5b5dc8815c27b35b05f</id>
<content type='text'>
This prevents possible processing of such frames and triggering
rb-&gt;post_handler if an error occurred during r-&gt;request_body
initialization.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This prevents possible processing of such frames and triggering
rb-&gt;post_handler if an error occurred during r-&gt;request_body
initialization.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: don't send WINDOW_UPDATE for an empty request body.</title>
<updated>2016-04-19T14:38:49+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2016-04-19T14:38:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=f4df08b19d5e2e9f5454b3850a0c01bc4f356125'/>
<id>f4df08b19d5e2e9f5454b3850a0c01bc4f356125</id>
<content type='text'>
Particularly this prevents sending WINDOW_UPDATE with zero delta
which can result in PROTOCOL_ERROR.

Also removed surplus setting of no_flow_control to 0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Particularly this prevents sending WINDOW_UPDATE with zero delta
which can result in PROTOCOL_ERROR.

Also removed surplus setting of no_flow_control to 0.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: write logs when refusing streams with data.</title>
<updated>2016-04-18T18:18:24+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2016-04-18T18:18:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=eb38cbda2fcf318b9e1f2e463705658c286ec04e'/>
<id>eb38cbda2fcf318b9e1f2e463705658c286ec04e</id>
<content type='text'>
Refusing streams is known to be incorrectly handled at least by IE, Edge
and Safari.  Make sure to provide appropriate logging to simplify fixing
this in the affected browsers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refusing streams is known to be incorrectly handled at least by IE, Edge
and Safari.  Make sure to provide appropriate logging to simplify fixing
this in the affected browsers.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: send WINDOW_UPDATE instead of RST_STREAM with NO_ERROR.</title>
<updated>2016-04-14T12:14:15+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2016-04-14T12:14:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7691b9750e0d3a2137e9d9188db65f7e39624b97'/>
<id>7691b9750e0d3a2137e9d9188db65f7e39624b97</id>
<content type='text'>
After the 92464ebace8e change, it has been discovered that not all
clients follow the RFC and handle RST_STREAM with NO_ERROR properly.

Notably, Chrome currently interprets it as INTERNAL_ERROR and discards
the response.

As a workaround, instead of RST_STREAM the maximum stream window update
will be sent, which will let client to send up to 2 GB of a request body
data before getting stuck on flow control.  All the received data will
be silently discarded.

See for details:
http://mailman.nginx.org/pipermail/nginx-devel/2016-April/008143.html
https://bugs.chromium.org/p/chromium/issues/detail?id=603182
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After the 92464ebace8e change, it has been discovered that not all
clients follow the RFC and handle RST_STREAM with NO_ERROR properly.

Notably, Chrome currently interprets it as INTERNAL_ERROR and discards
the response.

As a workaround, instead of RST_STREAM the maximum stream window update
will be sent, which will let client to send up to 2 GB of a request body
data before getting stuck on flow control.  All the received data will
be silently discarded.

See for details:
http://mailman.nginx.org/pipermail/nginx-devel/2016-April/008143.html
https://bugs.chromium.org/p/chromium/issues/detail?id=603182
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: refuse streams with data until SETTINGS is acknowledged.</title>
<updated>2016-04-14T12:14:15+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2016-04-14T12:14:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=536b5510d1051281bd9411723102333e6d1dbdf2'/>
<id>536b5510d1051281bd9411723102333e6d1dbdf2</id>
<content type='text'>
A client is allowed to send requests before receiving and acknowledging
the SETTINGS frame.  Such a client having a wrong idea about the stream's
could send the request body that nginx isn't ready to process.

The previous behavior was to send RST_STREAM with FLOW_CONTROL_ERROR in
such case, but it didn't allow retrying requests that have been rejected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A client is allowed to send requests before receiving and acknowledging
the SETTINGS frame.  Such a client having a wrong idea about the stream's
could send the request body that nginx isn't ready to process.

The previous behavior was to send RST_STREAM with FLOW_CONTROL_ERROR in
such case, but it didn't allow retrying requests that have been rejected.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: deduplicated some code in ngx_http_v2_state_headers().</title>
<updated>2016-04-14T12:14:15+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2016-04-14T12:14:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=60f0960ab6cb35a6fffc57f32c311c93c28181af'/>
<id>60f0960ab6cb35a6fffc57f32c311c93c28181af</id>
<content type='text'>
No functional changes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
No functional changes.
</pre>
</div>
</content>
</entry>
<entry>
<title>FastCGI: skip special bufs in buffered request body chain.</title>
<updated>2016-04-11T15:42:34+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2016-04-11T15:42:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=4c1b9fef65e9a992933ae0168e62bba279eabfab'/>
<id>4c1b9fef65e9a992933ae0168e62bba279eabfab</id>
<content type='text'>
This prevents forming empty records out of such buffers.  Particularly it fixes
double end-of-stream records with chunked transfer encoding, or when HTTP/2 is
used and the END_STREAM flag has been sent without data.  In both cases there
is an empty buffer at the end of the request body chain with the "last_buf"
flag set.

The canonical libfcgi, as well as php implementation, tolerates such records,
while the HHVM parser is more strict and drops the connection (ticket #950).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This prevents forming empty records out of such buffers.  Particularly it fixes
double end-of-stream records with chunked transfer encoding, or when HTTP/2 is
used and the END_STREAM flag has been sent without data.  In both cases there
is an empty buffer at the end of the request body chain with the "last_buf"
flag set.

The canonical libfcgi, as well as php implementation, tolerates such records,
while the HHVM parser is more strict and drops the connection (ticket #950).
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed typos.</title>
<updated>2016-04-11T15:47:11+00:00</updated>
<author>
<name>Alessandro Ghedini</name>
<email>alessandro@cloudflare.com</email>
</author>
<published>2016-04-11T15:47:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=35f05dd51fd13433c883eb5f9f9d3a0ea99ff44d'/>
<id>35f05dd51fd13433c883eb5f9f9d3a0ea99ff44d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed spelling.</title>
<updated>2016-04-07T08:50:13+00:00</updated>
<author>
<name>Josh Soref</name>
<email>timeless@gmail.com</email>
</author>
<published>2016-04-07T08:50:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=73d27510c0d7022384a611269af22ff01634c6d0'/>
<id>73d27510c0d7022384a611269af22ff01634c6d0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
