<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/event, branch release-1.3.16</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>Events: backout eventport changes (r5172) for now.</title>
<updated>2013-04-16T12:58:03+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2013-04-16T12:58:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=77d60d2cef7fa7b3aa0364d277904c59e18cda14'/>
<id>77d60d2cef7fa7b3aa0364d277904c59e18cda14</id>
<content type='text'>
Evenport method needs more work.  Changes in r5172, while being correct,
introduce various new regressions with current code.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Evenport method needs more work.  Changes in r5172, while being correct,
introduce various new regressions with current code.
</pre>
</div>
</content>
</entry>
<entry>
<title>Events: fixed typos in two previous commits.</title>
<updated>2013-04-12T17:31:08+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-04-12T17:31:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c79802924151aed853fd22cb52f21769a0da19d6'/>
<id>c79802924151aed853fd22cb52f21769a0da19d6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Events: handle only active events in eventport.</title>
<updated>2013-04-12T15:04:23+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-04-12T15:04:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c6aebf6c7411c5d43bd63cf61db08a1ec914dc5c'/>
<id>c6aebf6c7411c5d43bd63cf61db08a1ec914dc5c</id>
<content type='text'>
We generate both read and write events if an error event was returned by
port_getn() without POLLIN/POLLOUT, but we should not try to handle inactive
events, they may even have no handler.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We generate both read and write events if an error event was returned by
port_getn() without POLLIN/POLLOUT, but we should not try to handle inactive
events, they may even have no handler.
</pre>
</div>
</content>
</entry>
<entry>
<title>Events: protection from stale events in eventport and devpoll.</title>
<updated>2013-04-12T15:02:33+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-04-12T15:02:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=ed9f87c90119832c3c96fb9c352e53db61943fe4'/>
<id>ed9f87c90119832c3c96fb9c352e53db61943fe4</id>
<content type='text'>
Stale write event may happen if read and write events was reported both,
and processing of the read event closed descriptor.

In practice this might result in "sendfilev() failed (134: ..." or
"writev() failed (134: ..." errors when switching to next upstream server.

See report here:
http://mailman.nginx.org/pipermail/nginx/2013-April/038421.html
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Stale write event may happen if read and write events was reported both,
and processing of the read event closed descriptor.

In practice this might result in "sendfilev() failed (134: ..." or
"writev() failed (134: ..." errors when switching to next upstream server.

See report here:
http://mailman.nginx.org/pipermail/nginx/2013-April/038421.html
</pre>
</div>
</content>
</entry>
<entry>
<title>Event connect: don't penalize AF_INET6 connections.</title>
<updated>2013-03-27T15:16:45+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2013-03-27T15:16:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=3b9e7adcf44d3970944913fb1e3f0b4f3979f3a9'/>
<id>3b9e7adcf44d3970944913fb1e3f0b4f3979f3a9</id>
<content type='text'>
Problems with setsockopt(TCP_NODELAY) and setsockopt(TCP_NOPUSH), as well
as sendfile() syscall on Solaris, are specific to UNIX-domain sockets.
Other address families, i.e. AF_INET and AF_INET6, are fine.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problems with setsockopt(TCP_NODELAY) and setsockopt(TCP_NOPUSH), as well
as sendfile() syscall on Solaris, are specific to UNIX-domain sockets.
Other address families, i.e. AF_INET and AF_INET6, are fine.
</pre>
</div>
</content>
</entry>
<entry>
<title>Status: introduced the "ngx_stat_waiting" counter.</title>
<updated>2013-03-15T20:00:49+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-03-15T20:00:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=bac0cb3bbd507400c9dbac03eacbb6c6937efccd'/>
<id>bac0cb3bbd507400c9dbac03eacbb6c6937efccd</id>
<content type='text'>
And corresponding variable $connections_waiting was added.

Previously, waiting connections were counted as the difference between
active connections and the sum of reading and writing connections.
That made it impossible to count more than one request in one connection
as reading or writing (as is the case for SPDY).

Also, we no longer count connections in handshake state as waiting.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
And corresponding variable $connections_waiting was added.

Previously, waiting connections were counted as the difference between
active connections and the sum of reading and writing connections.
That made it impossible to count more than one request in one connection
as reading or writing (as is the case for SPDY).

Also, we no longer count connections in handshake state as waiting.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: retry "sess_id" and "id" allocations.</title>
<updated>2013-02-23T11:54:25+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2013-02-23T11:54:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=890ee444cafb9dcce387bd0814c2996a60ecf10e'/>
<id>890ee444cafb9dcce387bd0814c2996a60ecf10e</id>
<content type='text'>
In case of fully populated SSL session cache with no memory left for
new allocations, ngx_ssl_new_session() will try to expire the oldest
non-expired session and retry, but only in case when slab allocation
fails for "cached_sess", not when slab allocation fails for either
"sess_id" or "id", which can happen for number of reasons and results
in new session not being cached.

Patch fixes this by adding retry logic to "sess_id" &amp; "id" allocations.

Patch by Piotr Sikora.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case of fully populated SSL session cache with no memory left for
new allocations, ngx_ssl_new_session() will try to expire the oldest
non-expired session and retry, but only in case when slab allocation
fails for "cached_sess", not when slab allocation fails for either
"sess_id" or "id", which can happen for number of reasons and results
in new session not being cached.

Patch fixes this by adding retry logic to "sess_id" &amp; "id" allocations.

Patch by Piotr Sikora.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: fixed ngx_ssl_handshake() with level-triggered event methods.</title>
<updated>2013-02-01T14:37:43+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2013-02-01T14:37:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=2887c06fdecbb4eccaf69a9e7fbef55f1b49c2b5'/>
<id>2887c06fdecbb4eccaf69a9e7fbef55f1b49c2b5</id>
<content type='text'>
Missing calls to ngx_handle_write_event() and ngx_handle_read_event()
resulted in a CPU hog during SSL handshake if an level-triggered event
method (e.g. select) was used.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Missing calls to ngx_handle_write_event() and ngx_handle_read_event()
resulted in a CPU hog during SSL handshake if an level-triggered event
method (e.g. select) was used.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: take into account data in the buffer while limiting output.</title>
<updated>2013-01-28T15:41:12+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-01-28T15:41:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=733e6d2ac6c544aa1a3f42dbc93c9e6d4adf7122'/>
<id>733e6d2ac6c544aa1a3f42dbc93c9e6d4adf7122</id>
<content type='text'>
In some rare cases this can result in a more smooth sending rate.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some rare cases this can result in a more smooth sending rate.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: avoid calling SSL_write() with zero data size.</title>
<updated>2013-01-28T15:40:25+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-01-28T15:40:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0f0fac70a14fc489eab91888772073ed1259b633'/>
<id>0f0fac70a14fc489eab91888772073ed1259b633</id>
<content type='text'>
According to documentation, calling SSL_write() with num=0 bytes to be sent
results in undefined behavior.

We don't currently call ngx_ssl_send_chain() with empty chain and buffer.
This check handles the case of a chain with total data size that is
a multiple of NGX_SSL_BUFSIZE, and with the special buffer at the end.

In practice such cases resulted in premature connection close and critical
error "SSL_write() failed (SSL:)" in the error log.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
According to documentation, calling SSL_write() with num=0 bytes to be sent
results in undefined behavior.

We don't currently call ngx_ssl_send_chain() with empty chain and buffer.
This check handles the case of a chain with total data size that is
a multiple of NGX_SSL_BUFSIZE, and with the special buffer at the end.

In practice such cases resulted in premature connection close and critical
error "SSL_write() failed (SSL:)" in the error log.
</pre>
</div>
</content>
</entry>
</feed>
