VirtualBox

Changeset 41817 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 18, 2012 4:34:50 PM (13 years ago)
Author:
vboxsync
Message:

NAT: fix vbox/7459: drop packet if we can't send it because of EAGAIN and Co.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/udp.c

    r40583 r41817  
    294294                "of IP packet to socket %R[natsock]\n", strerror(errno), ip->ip_ttl, so));
    295295
    296     if (sosendto(pData, so, m) == -1)
     296    if (   sosendto(pData, so, m) == -1
     297        && (   errno != EAGAIN
     298            && errno != EWOULDBLOCK
     299            && errno != EINPROGRESS
     300            && errno != ENOTCONN))
    297301    {
    298302        m->m_len += iphlen;
     
    301305        Log2(("NAT: UDP tx errno = %d (%s) on sent to %RTnaipv4\n",
    302306              errno, strerror(errno), ip->ip_dst));
    303         icmp_error(pData, m, ICMP_UNREACH, ICMP_UNREACH_NET, 0, strerror(errno));
     307#if 0
     308        /* ICMP_SOURCEQUENCH haven't got any effect, the idea here
     309         * inform guest about the exosting NAT resources with assumption that
     310         * that guest reduce traffic. But it doesn't work
     311         */
     312        if(    errno == EAGAIN
     313            || errno == EWOULDBLOCK
     314            || errno == EINPROGRESS
     315            || errno == ENOTCONN)
     316            icmp_error(pData, m, ICMP_SOURCEQUENCH, 0, 1, strerror(errno));
     317        else
     318#endif
     319            icmp_error(pData, m, ICMP_UNREACH, ICMP_UNREACH_NET, 0, strerror(errno));
    304320        so->so_m = NULL;
    305321        LogFlowFuncLeave();
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette