<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http/v2, branch release-1.15.2</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>HTTP/2: use scheme from original request for pushes (closes #1549).</title>
<updated>2018-06-07T17:04:22+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-06-07T17:04:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=fb3a9e28b233f3c2823487378622e7cf4284857a'/>
<id>fb3a9e28b233f3c2823487378622e7cf4284857a</id>
<content type='text'>
Instead of the connection scheme, use scheme from the original request.
This fixes pushes when SSL is terminated by a proxy server in front of
nginx.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of the connection scheme, use scheme from the original request.
This fixes pushes when SSL is terminated by a proxy server in front of
nginx.
</pre>
</div>
</content>
</entry>
<entry>
<title>Added r-&gt;schema.</title>
<updated>2018-06-07T17:01:41+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-06-07T17:01:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=f11a9cbdd0f5806131e4308d2ce98a2a97ca4007'/>
<id>f11a9cbdd0f5806131e4308d2ce98a2a97ca4007</id>
<content type='text'>
For HTTP/1, it keeps scheme from the absolute form of URI.
For HTTP/2, the :scheme request pseudo-header field value.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For HTTP/1, it keeps scheme from the absolute form of URI.
For HTTP/2, the :scheme request pseudo-header field value.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: validate client request scheme.</title>
<updated>2018-06-07T08:47:10+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-06-07T08:47:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=94a2ce426fc36a6c82411a331bb18bf129c6d014'/>
<id>94a2ce426fc36a6c82411a331bb18bf129c6d014</id>
<content type='text'>
The scheme is validated as per RFC 3986, Section 3.1.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The scheme is validated as per RFC 3986, Section 3.1.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: improved frame info debugging.</title>
<updated>2018-03-19T18:32:15+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-03-19T18:32:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=74ea120f7d7445f0874add2c4f40f13de3bd5723'/>
<id>74ea120f7d7445f0874add2c4f40f13de3bd5723</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>gRPC: special handling of "trailer only" responses.</title>
<updated>2018-03-17T20:04:26+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-03-17T20:04:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=6559a420134b0f52ce2d4f147bdd92269ad5f677'/>
<id>6559a420134b0f52ce2d4f147bdd92269ad5f677</id>
<content type='text'>
The gRPC protocol makes a distinction between HEADERS frame with
the END_STREAM flag set, and a HEADERS frame followed by an empty
DATA frame with the END_STREAM flag.  The latter is not permitted,
and results in errors not being propagated through nginx.  Instead,
gRPC clients complain that "server closed the stream without sending
trailers" (seen in grpc-go) or "13: Received RST_STREAM with error
code 2" (seen in grpc-c).

To fix this, nginx now returns HEADERS with the END_STREAM flag if
the response length is known to be 0, and we are not expecting
any trailer headers to be added.  And the response length is
explicitly set to 0 in the gRPC proxy if we see initial HEADERS frame
with the END_STREAM flag set.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The gRPC protocol makes a distinction between HEADERS frame with
the END_STREAM flag set, and a HEADERS frame followed by an empty
DATA frame with the END_STREAM flag.  The latter is not permitted,
and results in errors not being propagated through nginx.  Instead,
gRPC clients complain that "server closed the stream without sending
trailers" (seen in grpc-go) or "13: Received RST_STREAM with error
code 2" (seen in grpc-c).

To fix this, nginx now returns HEADERS with the END_STREAM flag if
the response length is known to be 0, and we are not expecting
any trailer headers to be added.  And the response length is
explicitly set to 0 in the gRPC proxy if we see initial HEADERS frame
with the END_STREAM flag set.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: externalized various constants and interfaces.</title>
<updated>2018-03-17T20:04:20+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-03-17T20:04:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c554dd1434e1378ac5f83a97b6d250b772941498'/>
<id>c554dd1434e1378ac5f83a97b6d250b772941498</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: unknown frames now logged at info level.</title>
<updated>2018-03-05T18:35:13+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-03-05T18:35:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=83dceda8688fcba6da9fd12f6480606563d7b7a3'/>
<id>83dceda8688fcba6da9fd12f6480606563d7b7a3</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: style.</title>
<updated>2018-02-22T09:42:29+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-02-22T09:42:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=bcda92e843ca4f80df96bceba5918a73eaf1a71c'/>
<id>bcda92e843ca4f80df96bceba5918a73eaf1a71c</id>
<content type='text'>
Unified the style of validity checks in ngx_http_v2_validate_header().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Unified the style of validity checks in ngx_http_v2_validate_header().
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: precalculate hash for "Cookie".</title>
<updated>2018-02-15T16:06:22+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-02-15T16:06:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9e2cd6282f05b48d018de6dff87efc28a7d8b3fa'/>
<id>9e2cd6282f05b48d018de6dff87efc28a7d8b3fa</id>
<content type='text'>
There is no need to calculate hashes of static strings at runtime.  The
ngx_hash() macro can be used to do it during compilation instead, similarly
to how it is done in ngx_http_proxy_module.c for "Server" and "Date" headers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is no need to calculate hashes of static strings at runtime.  The
ngx_hash() macro can be used to do it during compilation instead, similarly
to how it is done in ngx_http_proxy_module.c for "Server" and "Date" headers.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: fixed ngx_http_v2_push_stream() allocation error handling.</title>
<updated>2018-02-15T14:51:37+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-02-15T14:51:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=89661c0e7d90fd493fc753d388d64c134f3bb3ad'/>
<id>89661c0e7d90fd493fc753d388d64c134f3bb3ad</id>
<content type='text'>
In particular, if a stream object allocation failed, and a client sent
the PRIORITY frame for this stream, ngx_http_v2_set_dependency() could
dereference a null pointer while trying to re-parent a dependency node.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In particular, if a stream object allocation failed, and a client sent
the PRIORITY frame for this stream, ngx_http_v2_set_dependency() could
dereference a null pointer while trying to re-parent a dependency node.
</pre>
</div>
</content>
</entry>
</feed>
