<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http, branch release-1.15.1</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>Upstream: fixed tcp_nopush with gRPC.</title>
<updated>2018-07-02T16:03:04+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-07-02T16:03:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=a7186c8f1ceef938b710509993719b93daff419a'/>
<id>a7186c8f1ceef938b710509993719b93daff419a</id>
<content type='text'>
With gRPC it is possible that a request sending is blocked due to flow
control.  Moreover, further sending might be only allowed once the
backend sees all the data we've already sent.  With such a backend
it is required to clear the TCP_NOPUSH socket option to make sure all
the data we've sent are actually delivered to the backend.

As such, we now clear TCP_NOPUSH in ngx_http_upstream_send_request()
also on NGX_AGAIN if c-&gt;write-&gt;ready is set.  This fixes a test (which
waits for all the 64k bytes as per initial window before allowing more
bytes) with sendfile enabled when the body was written to a file
in a different context.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With gRPC it is possible that a request sending is blocked due to flow
control.  Moreover, further sending might be only allowed once the
backend sees all the data we've already sent.  With such a backend
it is required to clear the TCP_NOPUSH socket option to make sure all
the data we've sent are actually delivered to the backend.

As such, we now clear TCP_NOPUSH in ngx_http_upstream_send_request()
also on NGX_AGAIN if c-&gt;write-&gt;ready is set.  This fixes a test (which
waits for all the 64k bytes as per initial window before allowing more
bytes) with sendfile enabled when the body was written to a file
in a different context.
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: fixed unexpected tcp_nopush usage on peer connections.</title>
<updated>2018-07-02T16:02:31+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-07-02T16:02:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=1331a99f5c55cb1aff399000af56b17a43552e3f'/>
<id>1331a99f5c55cb1aff399000af56b17a43552e3f</id>
<content type='text'>
Now tcp_nopush on peer connections is disabled if it is disabled on
the client connection, similar to how we handle c-&gt;sendfile.  Previously,
tcp_nopush was always used on upstream connections, regardless of
the "tcp_nopush" directive.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now tcp_nopush on peer connections is disabled if it is disabled on
the client connection, similar to how we handle c-&gt;sendfile.  Previously,
tcp_nopush was always used on upstream connections, regardless of
the "tcp_nopush" directive.
</pre>
</div>
</content>
</entry>
<entry>
<title>gRPC: clearing buffers in ngx_http_grpc_get_buf().</title>
<updated>2018-07-02T16:02:08+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-07-02T16:02:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=d842b4e5e0ebda87559d804de29dd56bd4cbc4dc'/>
<id>d842b4e5e0ebda87559d804de29dd56bd4cbc4dc</id>
<content type='text'>
We copy input buffers to our buffers, so various flags might be
unexpectedly set in buffers returned by ngx_chain_get_free_buf().

In particular, the b-&gt;in_file flag might be set when the body was
written to a file in a different context.  With sendfile enabled this
in turn might result in protocol corruption if such a buffer was reused
for a control frame.

Make sure to clear buffers and set only fields we really need to be set.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We copy input buffers to our buffers, so various flags might be
unexpectedly set in buffers returned by ngx_chain_get_free_buf().

In particular, the b-&gt;in_file flag might be set when the body was
written to a file in a different context.  With sendfile enabled this
in turn might result in protocol corruption if such a buffer was reused
for a control frame.

Make sure to clear buffers and set only fields we really need to be set.
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: ngx_http_upstream_random module.</title>
<updated>2018-06-15T08:46:14+00:00</updated>
<author>
<name>Vladimir Homutov</name>
<email>vl@nginx.com</email>
</author>
<published>2018-06-15T08:46:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0c4ccbea23813a50132df511d4445bc1686dbc2f'/>
<id>0c4ccbea23813a50132df511d4445bc1686dbc2f</id>
<content type='text'>
The module implements random load-balancing algorithm with optional second
choice.  In the latter case, the best of two servers is chosen, accounting
number of connections and server weight.

Example:

upstream u {
    random [two [least_conn]];

    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
    server 127.0.0.1:8083;
}
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The module implements random load-balancing algorithm with optional second
choice.  In the latter case, the best of two servers is chosen, accounting
number of connections and server weight.

Example:

upstream u {
    random [two [least_conn]];

    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
    server 127.0.0.1:8083;
}
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: improved peer selection concurrency for hash and ip_hash.</title>
<updated>2018-06-14T04:03:50+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-06-14T04:03:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=2eab9efbe4050ab471cfa3ed778d751454fcd87d'/>
<id>2eab9efbe4050ab471cfa3ed778d751454fcd87d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: disable body cleanup with preserve_output (ticket #1565).</title>
<updated>2018-06-13T12:28:11+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-06-13T12:28:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9b6bc8a5787d270a54a3465a23eef22cee870e37'/>
<id>9b6bc8a5787d270a54a3465a23eef22cee870e37</id>
<content type='text'>
With u-&gt;conf-&gt;preserve_output set the request body file might be used
after the response header is sent, so avoid cleaning it.  (Normally
this is not a problem as u-&gt;conf-&gt;preserve_output is only set with
r-&gt;request_body_no_buffering, but the request body might be already
written to a file in a different context.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With u-&gt;conf-&gt;preserve_output set the request body file might be used
after the response header is sent, so avoid cleaning it.  (Normally
this is not a problem as u-&gt;conf-&gt;preserve_output is only set with
r-&gt;request_body_no_buffering, but the request body might be already
written to a file in a different context.)
</pre>
</div>
</content>
</entry>
<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>Removed extraneous check while processing request line.</title>
<updated>2018-06-07T16:53:43+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-06-07T16:53:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=70b6e7a299e6488c2f59f1768c600921bd08a2d7'/>
<id>70b6e7a299e6488c2f59f1768c600921bd08a2d7</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: 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>
</feed>
