qemu-e2k/net
Stefan Hajnoczi 45a7f54a8b net: EAGAIN handling for net/socket.c TCP
Replace spinning send_all() with a proper non-blocking send.  When the
socket write buffer limit is reached, we should stop trying to send and
wait for the socket to become writable again.

Non-blocking TCP sockets can return in two different ways when the write
buffer limit is reached:

1. ret = -1 and errno = EAGAIN/EWOULDBLOCK.  No data has been written.

2. ret < total_size.  Short write, only part of the message was
   transmitted.

Handle both cases and keep track of how many bytes have been written in
s->send_index.  (This includes the 'length' header before the actual
payload buffer.)

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
2012-09-14 08:40:33 +01:00
..
checksum.c
checksum.h
dump.c
dump.h
hub.c
hub.h
Makefile.objs
queue.c
queue.h
slirp.c
slirp.h
socket.c net: EAGAIN handling for net/socket.c TCP 2012-09-14 08:40:33 +01:00
socket.h
tap-aix.c
tap-bsd.c
tap-haiku.c
tap-linux.c
tap-linux.h
tap-solaris.c
tap-win32.c
tap.c
tap.h
util.c
util.h
vde.c
vde.h