<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/eventlet.git, branch socket-send</title>
<subtitle>github.com: eventlet/eventlet.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/'/>
<entry>
<title>greenio: Remove sendall-like semantincs from GreenSocket.send</title>
<updated>2015-11-10T23:25:00+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2015-11-10T23:11:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=719e987c0de7f3c69f5b0fa6e51a65beba1068b8'/>
<id>719e987c0de7f3c69f5b0fa6e51a65beba1068b8</id>
<content type='text'>
When a socket timeout was set the sendall-like semantics was resulting
in losing information about sent data and raising socket.timeout exception.

The previous GreenSocket.send() implementation used to call fd.send() in a
loop until all data was sent. The issue would manifest if at least one
fd.send() call succeeded and was followed by a fd.send() call that would
block and a trampoline that timed out. The client code would see
socket.timeout being raised and would rightfully assume that no data was
sent which would be incorrect.

Discussed at https://github.com/eventlet/eventlet/issues/260.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a socket timeout was set the sendall-like semantics was resulting
in losing information about sent data and raising socket.timeout exception.

The previous GreenSocket.send() implementation used to call fd.send() in a
loop until all data was sent. The issue would manifest if at least one
fd.send() call succeeded and was followed by a fd.send() call that would
block and a trampoline that timed out. The client code would see
socket.timeout being raised and would rightfully assume that no data was
sent which would be incorrect.

Discussed at https://github.com/eventlet/eventlet/issues/260.
</pre>
</div>
</content>
</entry>
<entry>
<title>subprocess: Fix Python 3.5 mswindows regression</title>
<updated>2015-11-05T08:20:55+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2015-11-04T22:38:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=da7f9732b6d9d52c8bca5cdbb536beb1fac14b44'/>
<id>da7f9732b6d9d52c8bca5cdbb536beb1fac14b44</id>
<content type='text'>
In Python 3.5 subprocess.mswindows no longer exists. It is renamed to
subprocess._mswindows, I decided we don't really have to access that
now "private" attribute in order to know if we're on MS Windows.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In Python 3.5 subprocess.mswindows no longer exists. It is renamed to
subprocess._mswindows, I decided we don't really have to access that
now "private" attribute in order to know if we're on MS Windows.
</pre>
</div>
</content>
</entry>
<entry>
<title>python3: Stdlib_Queue from six.moves</title>
<updated>2015-10-13T11:50:10+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2015-10-13T11:50:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=b5fb94662c323ca473277b3fdf99f61327ec8d53'/>
<id>b5fb94662c323ca473277b3fdf99f61327ec8d53</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>GH #248: Fix GreenFileIO.write()</title>
<updated>2015-10-13T10:36:20+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>vstinner@redhat.com</email>
</author>
<published>2015-09-24T09:53:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=e3f88347d96f653d65f66a46b6bda618a6cb129d'/>
<id>e3f88347d96f653d65f66a46b6bda618a6cb129d</id>
<content type='text'>
On Python 3, GreenFileIO.write() now always write all bytes using a
loop, to have the same behaviour than GreenPipe.write() on Python 2.
Before, the write() could be partial, write less bytes than expected.

On Python 2, GreenPipe.write() doesn't allow partial writes, it
always write all bytes, even if the user requested an unbuffered pipe
(ex: by calling os.fdopen(fd, 'wb', 0)).

Modifying Python 2 to be pedantic and allow partial writes for
unbuffered pipes will likely break a lot of applications. It's
simpler to modify Python 3 GreenFileIO to behave the same than Python
2 GreenPipe.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On Python 3, GreenFileIO.write() now always write all bytes using a
loop, to have the same behaviour than GreenPipe.write() on Python 2.
Before, the write() could be partial, write less bytes than expected.

On Python 2, GreenPipe.write() doesn't allow partial writes, it
always write all bytes, even if the user requested an unbuffered pipe
(ex: by calling os.fdopen(fd, 'wb', 0)).

Modifying Python 2 to be pedantic and allow partial writes for
unbuffered pipes will likely break a lot of applications. It's
simpler to modify Python 3 GreenFileIO to behave the same than Python
2 GreenPipe.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix docstring which pointed to wrong Queue</title>
<updated>2015-10-13T10:16:54+00:00</updated>
<author>
<name>Ramakrishnan G</name>
<email>rameshg87@gmail.com</email>
</author>
<published>2015-09-14T11:38:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=299da78a65c4c0f87070d92098675677eb113199'/>
<id>299da78a65c4c0f87070d92098675677eb113199</id>
<content type='text'>
This commit fixes the docstring which pointed
to the wrong class eventlet.queue.Queue instead
of the one in standard library.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit fixes the docstring which pointed
to the wrong class eventlet.queue.Queue instead
of the one in standard library.
</pre>
</div>
</content>
</entry>
<entry>
<title>wsgi: don't buffer empty strings from the application</title>
<updated>2015-10-12T18:25:35+00:00</updated>
<author>
<name>Samuel Merritt</name>
<email>sam@swiftstack.com</email>
</author>
<published>2015-10-12T18:25:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=27e899df9d5cf20f1a5e5e0228bf0e2f6ebef47b'/>
<id>27e899df9d5cf20f1a5e5e0228bf0e2f6ebef47b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>wsgi: suppress output of 0-byte chunks</title>
<updated>2015-10-09T00:58:23+00:00</updated>
<author>
<name>Samuel Merritt</name>
<email>sam@swiftstack.com</email>
</author>
<published>2015-10-08T23:05:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=f1e4d33d0269d74e2c3a8b26a3198720da588f73'/>
<id>f1e4d33d0269d74e2c3a8b26a3198720da588f73</id>
<content type='text'>
Under certain conditions, if the WSGI iterable yields an empty string,
it can cause the response to be terminated.

The conditions are as follows:

  * no minimum chunk size (eventlet.wsgi.server() was called with
    minimum_chunk_size=0, or
    env['eventlet.minimum_write_chunk_size'] = 0)

  * chunked transfer-encoding on the response

In this case, if the WSGI iterable yields an empty string, then
eventlet.wsgi obligingly turns that into "0\r\n\r\n" and writes that
to the socket. This, of course, terminates the response as far as the
client is concerned. However, eventlet.wsgi doesn't notice, so it'll
happily keep calling next(app_iter) and sending the chunks.

If Connection: keep-alive is set, the client might then send the next
request, read some chunked response body, fail to parse it, and then
disconnect.

In other cases, either the 0-byte chunk is saved in the chunk buffer
until the minimum chunk size is met, or 0 bytes get written to the
socket. Those are both no-ops.

This commit discards 0-byte chunks from the WSGI iterable.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Under certain conditions, if the WSGI iterable yields an empty string,
it can cause the response to be terminated.

The conditions are as follows:

  * no minimum chunk size (eventlet.wsgi.server() was called with
    minimum_chunk_size=0, or
    env['eventlet.minimum_write_chunk_size'] = 0)

  * chunked transfer-encoding on the response

In this case, if the WSGI iterable yields an empty string, then
eventlet.wsgi obligingly turns that into "0\r\n\r\n" and writes that
to the socket. This, of course, terminates the response as far as the
client is concerned. However, eventlet.wsgi doesn't notice, so it'll
happily keep calling next(app_iter) and sending the chunks.

If Connection: keep-alive is set, the client might then send the next
request, read some chunked response body, fail to parse it, and then
disconnect.

In other cases, either the 0-byte chunk is saved in the chunk buffer
until the minimum chunk size is met, or 0 bytes get written to the
socket. Those are both no-ops.

This commit discards 0-byte chunks from the WSGI iterable.
</pre>
</div>
</content>
</entry>
<entry>
<title>subprocess: support universal_newlines</title>
<updated>2015-09-15T22:55:32+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2015-09-13T10:11:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=5a4a7ead2435025e2c727c902d7e985be0204417'/>
<id>5a4a7ead2435025e2c727c902d7e985be0204417</id>
<content type='text'>
https://github.com/eventlet/eventlet/issues/243
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/eventlet/eventlet/issues/243
</pre>
</div>
</content>
</entry>
<entry>
<title>Python 3 compat: Fix TypeError on empty websocket message</title>
<updated>2015-09-15T08:58:48+00:00</updated>
<author>
<name>mui</name>
<email>mui@dm0</email>
</author>
<published>2015-09-15T08:58:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=8482499f135d2bbe944884e5831534ba1476f559'/>
<id>8482499f135d2bbe944884e5831534ba1476f559</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>wsgi: improved request body discard</title>
<updated>2015-09-07T01:23:47+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2015-09-07T01:23:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=b443de322aed2b0f9f0d1aab3d24c1f7cd5bd2da'/>
<id>b443de322aed2b0f9f0d1aab3d24c1f7cd5bd2da</id>
<content type='text'>
- skip request body discarding when connection was to be closed anyway
- handle ChunkReadError while discarding, write to log, close connection

https://github.com/eventlet/eventlet/issues/27
https://github.com/eventlet/eventlet/issues/242
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- skip request body discarding when connection was to be closed anyway
- handle ChunkReadError while discarding, write to log, close connection

https://github.com/eventlet/eventlet/issues/27
https://github.com/eventlet/eventlet/issues/242
</pre>
</div>
</content>
</entry>
</feed>
