FreeBSD Bugzilla – Attachment 39106 Details for
Bug 61744
[tcp] [patch] TCP hangs onto mbufs with no tcp data unnecessily under certain error conditions
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch-2.diff
patch-2.diff (text/plain), 1.17 KB, created by
Andre Oppermann
on 2010-08-16 23:13:40 UTC
(
hide
)
Description:
patch-2.diff
Filename:
MIME Type:
Creator:
Andre Oppermann
Created:
2010-08-16 23:13:40 UTC
Size:
1.17 KB
patch
obsolete
>Index: netinet/tcp_reass.c >=================================================================== >--- netinet/tcp_reass.c (revision 211397) >+++ netinet/tcp_reass.c (working copy) >@@ -158,7 +158,21 @@ > if (th == NULL) > goto present; > >+#if 1 > /* >+ * If there is no data with this mbuf just skip it. This can >+ * happen on a (retransmitted) segment with FIN but no data. >+ * The FIN is not to be reported in the thflags return value. >+ * Don't try store the pure FIN to avoid complexity. >+ */ >+ if (*tlenp == 0) { >+ TCPSTAT_INC(tcps_rcvoopack); >+ m_freem(m); >+ return (0); >+ } >+#endif >+ >+ /* > * Limit the number of segments in the reassembly queue to prevent > * holding on to too many segments (and thus running out of mbufs). > * Make sure to let the missing segment through which caused this >@@ -226,6 +240,15 @@ > m_adj(m, i); > *tlenp -= i; > th->th_seq += i; >+ } else if (i == 0 && *tlenp == 0) { >+ /* Integrate pure FIN segment. */ >+ TCPSTAT_INC(tcps_rcvoopack); >+ p->tqe_th->th_flags |= th->th_flags & TH_FIN; >+ m_freem(m); >+ uma_zfree(V_tcp_reass_zone, te); >+ tp->t_segqlen--; >+ V_tcp_reass_qsize--; >+ return (0); > } > } > TCPSTAT_INC(tcps_rcvoopack);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 61744
: 39106