Queue writes when socket is full
authorJack Miller <jack@codezen.org>
Mon, 20 Jul 2015 16:30:28 +0000 (11:30 -0500)
committerJack Miller <jack@codezen.org>
Wed, 22 Jul 2015 03:20:30 +0000 (22:20 -0500)
commitb749043a4e84373152e9c1d3fe310e35480169ff
treeeb2b36b0c9a8f4021f5407e84ae67b966a0ede15
parented0e16f19ccd46ba8c23c683de26ae5eab31ff04
Queue writes when socket is full

Current code breaks down when there's a large amount of socket traffic.
The reason is that both sides, the client and server can block in poll()
on write() forever because the socket is full and the condition will
never clear if the other side is also blocked on write (or any other
reason it's not actively reading data from the socket).

Right now, the flush is attached to the read() because this is where the
thread will idle and it doesn't hurt to wake up a couple of times a
second if we have data pending.
canto_next/protocol.py
canto_next/server.py