summaryrefslogtreecommitdiff
path: root/src/VBox/Devices/Network/slirp/socket.c
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2014-03-26 19:21:20 +0000
committer <>2014-05-08 15:03:54 +0000
commitfb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch)
treec2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/Devices/Network/slirp/socket.c
parent58ed4748338f9466599adfc8a9171280ed99e23f (diff)
downloadVirtualBox-master.tar.gz
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/Devices/Network/slirp/socket.c')
-rw-r--r--src/VBox/Devices/Network/slirp/socket.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/VBox/Devices/Network/slirp/socket.c b/src/VBox/Devices/Network/slirp/socket.c
index 05d122bb..d1e7e2a0 100644
--- a/src/VBox/Devices/Network/slirp/socket.c
+++ b/src/VBox/Devices/Network/slirp/socket.c
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2006-2010 Oracle Corporation
+ * Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -195,6 +195,9 @@ sofree(PNATState pData, struct socket *so)
* Check that we don't freeng socket with tcbcb
*/
Assert(!sototcpcb(so));
+ /* udp checks */
+ Assert(!so->so_timeout);
+ Assert(!so->so_timeout_arg);
if (so == tcp_last_so)
tcp_last_so = &tcb;
else if (so == udp_last_so)
@@ -1137,9 +1140,10 @@ solisten(PNATState pData, u_int32_t bind_addr, u_int port, u_int32_t laddr, u_in
#else
int tmperrno = errno; /* Don't clobber the real reason we failed */
close(s);
- QSOCKET_LOCK(tcb);
- sofree(pData, so);
- QSOCKET_UNLOCK(tcb);
+ if (sototcpcb(so))
+ tcp_close(pData, sototcpcb(so));
+ else
+ sofree(pData, so);
/* Restore the real errno */
errno = tmperrno;
#endif
@@ -1474,7 +1478,7 @@ sorecvfrom_icmp_win(PNATState pData, struct socket *so)
int out_len;
int size;
- len = pData->pfIcmpParseReplies(pData->pvIcmpBuffer, pData->szIcmpBuffer);
+ len = pData->pfIcmpParseReplies(pData->pvIcmpBuffer, pData->cbIcmpBuffer);
if (len < 0)
{
LogRel(("NAT: Error (%d) occurred on ICMP receiving\n", GetLastError()));