<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/event, branch release-1.3.15</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<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>
<entry>
<title>SSL: calculation of buffer size moved closer to its usage.</title>
<updated>2013-01-28T15:38:36+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-01-28T15:38:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=f98b1d256114e7f9bdfd17ea362cdcb137cdc62c'/>
<id>f98b1d256114e7f9bdfd17ea362cdcb137cdc62c</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>SSL: preservation of flush flag for buffered data.</title>
<updated>2013-01-28T15:37:11+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-01-28T15:37:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0f62e193dc98435f9e186da016681ba2aa5a2064'/>
<id>0f62e193dc98435f9e186da016681ba2aa5a2064</id>
<content type='text'>
Previously, if SSL buffer was not sent we lost information that the data
must be flushed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, if SSL buffer was not sent we lost information that the data
must be flushed.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: resetting of flush flag after the data was written.</title>
<updated>2013-01-28T15:35:12+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-01-28T15:35:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c857dade60bf7298226e0ba3d817ac56fb4abf49'/>
<id>c857dade60bf7298226e0ba3d817ac56fb4abf49</id>
<content type='text'>
There is no need to flush next chunk of data if it does not contain a buffer
with the flush or last_buf flags set.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is no need to flush next chunk of data if it does not contain a buffer
with the flush or last_buf flags set.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: removed conditions that always hold true.</title>
<updated>2013-01-28T15:34:09+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-01-28T15:34:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=693ba0179e4126fe3490e1c499d982183931598d'/>
<id>693ba0179e4126fe3490e1c499d982183931598d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Events: fixed null pointer dereference with resolver and poll.</title>
<updated>2013-01-25T09:59:28+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2013-01-25T09:59:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=33e934ccc8fcf4f62fbbd08c1eb1b396cac5facb'/>
<id>33e934ccc8fcf4f62fbbd08c1eb1b396cac5facb</id>
<content type='text'>
A POLLERR signalled by poll() without POLLIN/POLLOUT, as seen on
Linux, would generate both read and write events, but there's no
write event handler for resolver events.  A fix is to only call
event handler of an active event.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A POLLERR signalled by poll() without POLLIN/POLLOUT, as seen on
Linux, would generate both read and write events, but there's no
write event handler for resolver events.  A fix is to only call
event handler of an active event.
</pre>
</div>
</content>
</entry>
</feed>
