VirtualBox

Changeset 14284 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Nov 18, 2008 10:43:38 AM (16 years ago)
Author:
vboxsync
Message:

Fix of calling reassembly routine

File:
1 edited

Legend:

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

    r14275 r14284  
    12371237                (void) tcp_reass(pData, tp, (struct tcpiphdr *)0, (struct mbuf *)0);
    12381238#else /* !VBOX_WITH_BSD_TCP_REASS */
    1239                 (void) tcp_reass(pData, tp, (struct tcpiphdr *)0, (int *)0, (struct mbuf *)0);
     1239                (void) tcp_reass(pData, tp, (struct tcphdr *)0, (int *)0, (struct mbuf *)0);
    12401240#endif /*VBOX_WITH_BSD_TCP_REASS*/
    12411241                tp->snd_wl1 = ti->ti_seq - 1;
     
    15431543                TCP_REASS(pData, tp, ti, m, so, tiflags);
    15441544#else /* !VBOX_WITH_BSD_TCP_REASS */
    1545                 DELAY_ACK(tp, ti); /* little bit different from BSD declaration see netinet/tcp_input.c */
    1546                 tp->rcv_nxt += tlen;
    1547                 tiflags = ti->ti_t.th_flags & TH_FIN;
    1548                 tcpstat.tcps_rcvpack++;
    1549                 tcpstat.tcps_rcvbyte += tlen;
    1550                 if (so->so_state & SS_FCANTRCVMORE)
    1551                         m_freem(pData, m);
    1552                 else
    1553                         sbappend(pData, so, m);
    1554                 /* NB: sorwakeup_locked() does an implicit unlock. */
    1555                 sorwakeup(so);
     1545                if (ti->ti_seq == tp->rcv_nxt
     1546                && LIST_EMPTY(&tp->t_segq)
     1547                && tp->t_state == TCPS_ESTABLISHED) {
     1548                    DELAY_ACK(tp, ti); /* little bit different from BSD declaration see netinet/tcp_input.c */
     1549                    tp->rcv_nxt += tlen;
     1550                    tiflags = ti->ti_t.th_flags & TH_FIN;
     1551                    tcpstat.tcps_rcvpack++;
     1552                    tcpstat.tcps_rcvbyte += tlen;
     1553                    if (so->so_state & SS_FCANTRCVMORE)
     1554                        m_freem(pData, m);
     1555                    else
     1556                        sbappend(pData, so, m);
     1557                }
     1558                else {
     1559                    tiflags = tcp_reass(pData, tp, &ti->ti_t, &tlen, m);
     1560                    tiflags |= TF_ACKNOW;
     1561                }
    15561562#endif /* VBOX_WITH_BSD_TCP_REASS */
    15571563                /*
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