<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http/modules, branch release-1.11.13</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>Upstream: allow recovery from "429 Too Many Requests" response.</title>
<updated>2017-03-24T09:48:03+00:00</updated>
<author>
<name>Piotr Sikora</name>
<email>piotrsikora@google.com</email>
</author>
<published>2017-03-24T09:48:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=ca1a5057e2a0429350ec2d07c4616a75e34424e3'/>
<id>ca1a5057e2a0429350ec2d07c4616a75e34424e3</id>
<content type='text'>
This change adds "http_429" parameter to "proxy_next_upstream" for
retrying rate-limited requests, and to "proxy_cache_use_stale" for
serving stale cached responses after being rate-limited.

Signed-off-by: Piotr Sikora &lt;piotrsikora@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change adds "http_429" parameter to "proxy_next_upstream" for
retrying rate-limited requests, and to "proxy_cache_use_stale" for
serving stale cached responses after being rate-limited.

Signed-off-by: Piotr Sikora &lt;piotrsikora@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Slice filter: prevented slice redirection (ticket #1219).</title>
<updated>2017-03-31T18:47:56+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2017-03-31T18:47:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c31239ffb46586a00e60d957c844ffe63b138144'/>
<id>c31239ffb46586a00e60d957c844ffe63b138144</id>
<content type='text'>
When a slice subrequest was redirected to a new location, its context was lost.
After its completion, a new slice subrequest for the same slice was created.
This could lead to infinite loop.  Now the slice module makes sure each slice
subrequest starts output with the slice context available.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a slice subrequest was redirected to a new location, its context was lost.
After its completion, a new slice subrequest for the same slice was created.
This could lead to infinite loop.  Now the slice module makes sure each slice
subrequest starts output with the slice context available.
</pre>
</div>
</content>
</entry>
<entry>
<title>Slice filter: allowed at most one subrequest at a time.</title>
<updated>2017-03-28T11:03:57+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2017-03-28T11:03:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=8c9a66298c627ed4eae2557b322c3f33da97eca4'/>
<id>8c9a66298c627ed4eae2557b322c3f33da97eca4</id>
<content type='text'>
Previously, if slice main request write handler was called while a slice
subrequest was running, a new subrequest for the same slice was started.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, if slice main request write handler was called while a slice
subrequest was running, a new subrequest for the same slice was started.
</pre>
</div>
</content>
</entry>
<entry>
<title>Moved handling of wev-&gt;delayed to the connection event handler.</title>
<updated>2017-04-02T11:32:29+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2017-04-02T11:32:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=5d5f0dcac4e3bbd4464aa1185d7fd51587a3119e'/>
<id>5d5f0dcac4e3bbd4464aa1185d7fd51587a3119e</id>
<content type='text'>
With post_action or subrequests, it is possible that the timer set for
wev-&gt;delayed will expire while the active subrequest write event handler
is not ready to handle this.  This results in request hangs as observed
with limit_rate / sendfile_max_chunk and post_action (ticket #776) or
subrequests (ticket #1228).

Moving the handling to the connection event handler fixes the hangs observed,
and also slightly simplifies the code.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With post_action or subrequests, it is possible that the timer set for
wev-&gt;delayed will expire while the active subrequest write event handler
is not ready to handle this.  This results in request hangs as observed
with limit_rate / sendfile_max_chunk and post_action (ticket #776) or
subrequests (ticket #1228).

Moving the handling to the connection event handler fixes the hangs observed,
and also slightly simplifies the code.
</pre>
</div>
</content>
</entry>
<entry>
<title>Perl: fixed delaying subrequests.</title>
<updated>2017-04-02T11:32:28+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2017-04-02T11:32:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=96e4e84ce273664d0ee43c5c5b7d14efa6f86d39'/>
<id>96e4e84ce273664d0ee43c5c5b7d14efa6f86d39</id>
<content type='text'>
Much like in limit_req, use the wev-&gt;delayed flag to ensure proper handling
and interoperability with limit_rate.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Much like in limit_req, use the wev-&gt;delayed flag to ensure proper handling
and interoperability with limit_rate.
</pre>
</div>
</content>
</entry>
<entry>
<title>Limit req: fixed delaying subrequests.</title>
<updated>2017-04-02T11:32:26+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2017-04-02T11:32:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=fae6878f202b13f0ffe39f75fe19fa15e179e9d5'/>
<id>fae6878f202b13f0ffe39f75fe19fa15e179e9d5</id>
<content type='text'>
Since limit_req uses connection's write event to delay request processing,
it can conflict with timers in other subrequests.  In particular, even
if applied to an active subrequest, it can break things if wev-&gt;delayed
is already set (due to limit_rate or sendfile_max_chunk), since after
limit_req finishes the wev-&gt;delayed flag will be set and no timer will be
active.

Fix is to use the wev-&gt;delayed flag in limit_req as well.  This ensures that
wev-&gt;delayed won't be set after limit_req finishes, and also ensures that
limit_req's timers will be properly handled by other subrequests if the one
delayed by limit_req is not active.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since limit_req uses connection's write event to delay request processing,
it can conflict with timers in other subrequests.  In particular, even
if applied to an active subrequest, it can break things if wev-&gt;delayed
is already set (due to limit_rate or sendfile_max_chunk), since after
limit_req finishes the wev-&gt;delayed flag will be set and no timer will be
active.

Fix is to use the wev-&gt;delayed flag in limit_req as well.  This ensures that
wev-&gt;delayed won't be set after limit_req finishes, and also ensures that
limit_req's timers will be properly handled by other subrequests if the one
delayed by limit_req is not active.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed ngx_open_cached_file() error handling.</title>
<updated>2017-03-28T11:21:38+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2017-03-28T11:21:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9ad18e43ac2c9956399018cbb998337943988333'/>
<id>9ad18e43ac2c9956399018cbb998337943988333</id>
<content type='text'>
If of.err is 0, it means that there was a memory allocation error
and no further logging and/or processing is needed.  The of.failed
string can be only accessed if of.err is not 0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If of.err is 0, it means that there was a memory allocation error
and no further logging and/or processing is needed.  The of.failed
string can be only accessed if of.err is not 0.
</pre>
</div>
</content>
</entry>
<entry>
<title>Access log: removed dead ev-&gt;timedout check in flush timer handler.</title>
<updated>2017-03-07T15:51:12+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2017-03-07T15:51:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c1d8318d3112a2752971d76fc15d1fca8557691d'/>
<id>c1d8318d3112a2752971d76fc15d1fca8557691d</id>
<content type='text'>
The ev-&gt;timedout flag is set on first timer expiration, and never reset
after it.  Due to this the code to stop the timer when the timer was
canceled never worked (except in a very specific time frame immediately
after start), and the timer was always armed again.  This essentially
resulted in a buffer flush at the end of an event loop iteration.

This behaviour actually seems to be better than just stopping the flush
timer for the whole shutdown, so it is preserved as is instead of fixing
the code to actually remove the timer.  It will be further improved by
upcoming changes to preserve cancelable timers if there are other timers
blocking shutdown.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The ev-&gt;timedout flag is set on first timer expiration, and never reset
after it.  Due to this the code to stop the timer when the timer was
canceled never worked (except in a very specific time frame immediately
after start), and the timer was always armed again.  This essentially
resulted in a buffer flush at the end of an event loop iteration.

This behaviour actually seems to be better than just stopping the flush
timer for the whole shutdown, so it is preserved as is instead of fixing
the code to actually remove the timer.  It will be further improved by
upcoming changes to preserve cancelable timers if there are other timers
blocking shutdown.
</pre>
</div>
</content>
</entry>
<entry>
<title>Added missing static specifiers.</title>
<updated>2017-03-02T13:46:00+00:00</updated>
<author>
<name>Eran Kornblau</name>
<email>erankor@gmail.com</email>
</author>
<published>2017-03-02T13:46:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0759f088a532ec48170ca03d694cc103757a0f4c'/>
<id>0759f088a532ec48170ca03d694cc103757a0f4c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Gzip: free chain links on the hot path (ticket #1046).</title>
<updated>2017-02-13T18:45:01+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2017-02-13T18:45:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=fb5c0baa456526206d945e618cc2d50b441b0164'/>
<id>fb5c0baa456526206d945e618cc2d50b441b0164</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
