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
..
Makefile.objs net: Add a hub net client 2012-08-01 12:28:51 +01:00
checksum.c Change license from GPLv2 to GPLv2+ 2012-02-01 16:24:54 -06:00
checksum.h net: move net-checksum.c under net/ 2009-10-30 08:39:26 -05:00
dump.c net: Rename VLANClientState to NetClientState 2012-08-01 13:32:10 +01:00
dump.h net: Rename VLANClientState to NetClientState 2012-08-01 13:32:10 +01:00
hub.c net: broadcast hub packets if at least one port can receive 2012-09-14 08:40:33 +01:00
hub.h net: Rename VLANClientState to NetClientState 2012-08-01 13:32:10 +01:00
queue.c net: do not report queued packets as sent 2012-09-14 08:40:32 +01:00
queue.h net: notify iothread after flushing queue 2012-09-14 08:40:31 +01:00
slirp.c qapi: avoid reserved keywords 2012-08-09 18:34:57 +00:00
slirp.h net: Rename VLANClientState to NetClientState 2012-08-01 13:32:10 +01:00
socket.c net: EAGAIN handling for net/socket.c TCP 2012-09-14 08:40:33 +01:00
socket.h net: Rename VLANClientState to NetClientState 2012-08-01 13:32:10 +01:00
tap-aix.c convert net_init_tap() to NetClientOptions 2012-07-23 11:55:18 +01:00
tap-bsd.c convert net_init_tap() to NetClientOptions 2012-07-23 11:55:18 +01:00
tap-haiku.c convert net_init_tap() to NetClientOptions 2012-07-23 11:55:18 +01:00
tap-linux.c convert net_init_tap() to NetClientOptions 2012-07-23 11:55:18 +01:00
tap-linux.h tap: add APIs for vnet header length 2010-09-07 20:27:33 +03:00
tap-solaris.c convert net_init_tap() to NetClientOptions 2012-07-23 11:55:18 +01:00
tap-win32.c net: Rename vc local variables to nc 2012-08-01 13:32:10 +01:00
tap.c monitor: Rename+move net_handle_fd_param -> monitor_handle_fd_param 2012-09-07 09:15:08 +03:00
tap.h net: Rename vc local variables to nc 2012-08-01 13:32:10 +01:00
util.c net: move parse_macaddr() to net/util.[ch] 2009-12-03 09:41:34 -06:00
util.h net: move parse_macaddr() to net/util.[ch] 2009-12-03 09:41:34 -06:00
vde.c net: Rename VLANClientState to NetClientState 2012-08-01 13:32:10 +01:00
vde.h net: Rename VLANClientState to NetClientState 2012-08-01 13:32:10 +01:00