aboutsummaryrefslogtreecommitdiffstats
path: root/slirp/slirp.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-10-07 23:27:35 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-10-07 23:27:35 +0000
commit02d2c54cd3e1a65ce4eaf1555b7f73d0a50eaec4 (patch)
tree52c827b911f8ce0cc99998198dc0fef5abee3c97 /slirp/slirp.c
parent890fa6bebbb540b9761aafc3fe37b87e26578346 (diff)
windows fixes (Gregory Alexander)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1102 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'slirp/slirp.c')
-rw-r--r--slirp/slirp.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 99f168740..3b840a82d 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -414,7 +414,7 @@ void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds)
/* Connected */
so->so_state &= ~SS_ISFCONNECTING;
- ret = write(so->s, &ret, 0);
+ ret = send(so->s, &ret, 0, 0);
if (ret < 0) {
/* XXXXX Must fix, zero bytes is a NOP */
if (errno == EAGAIN || errno == EWOULDBLOCK ||
@@ -447,7 +447,7 @@ void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds)
*/
#ifdef PROBE_CONN
if (so->so_state & SS_ISFCONNECTING) {
- ret = read(so->s, (char *)&ret, 0);
+ ret = recv(so->s, (char *)&ret, 0,0);
if (ret < 0) {
/* XXX */
@@ -460,7 +460,7 @@ void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds)
/* tcp_input will take care of it */
} else {
- ret = write(so->s, &ret, 0);
+ ret = send(so->s, &ret, 0,0);
if (ret < 0) {
/* XXX */
if (errno == EAGAIN || errno == EWOULDBLOCK ||
@@ -496,6 +496,15 @@ void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds)
*/
if (if_queued && link_up)
if_start();
+
+ /* clear global file descriptor sets.
+ * these reside on the stack in vl.c
+ * so they're unusable if we're not in
+ * slirp_select_fill or slirp_select_poll.
+ */
+ global_readfds = NULL;
+ global_writefds = NULL;
+ global_xfds = NULL;
}
#define ETH_ALEN 6