View | Details | Raw Unified | Return to bug 61744
Collapse All | Expand All

(-)netinet/tcp_reass.c (+23 lines)
Lines 158-164 Link Here
158
	if (th == NULL)
158
	if (th == NULL)
159
		goto present;
159
		goto present;
160
160
161
#if 1
161
	/*
162
	/*
163
	 * If there is no data with this mbuf just skip it.  This can
164
	 * happen on a (retransmitted) segment with FIN but no data.
165
	 * The FIN is not to be reported in the thflags return value.
166
	 * Don't try store the pure FIN to avoid complexity.
167
	 */
168
	if (*tlenp == 0) {
169
		TCPSTAT_INC(tcps_rcvoopack);
170
		m_freem(m);
171
		return (0);
172
	}
173
#endif
174
175
	/*
162
	 * Limit the number of segments in the reassembly queue to prevent
176
	 * Limit the number of segments in the reassembly queue to prevent
163
	 * holding on to too many segments (and thus running out of mbufs).
177
	 * holding on to too many segments (and thus running out of mbufs).
164
	 * Make sure to let the missing segment through which caused this
178
	 * Make sure to let the missing segment through which caused this
Lines 226-231 Link Here
226
			m_adj(m, i);
240
			m_adj(m, i);
227
			*tlenp -= i;
241
			*tlenp -= i;
228
			th->th_seq += i;
242
			th->th_seq += i;
243
		} else if (i == 0 && *tlenp == 0) {
244
			/* Integrate pure FIN segment. */
245
			TCPSTAT_INC(tcps_rcvoopack);
246
			p->tqe_th->th_flags |= th->th_flags & TH_FIN;
247
			m_freem(m);
248
			uma_zfree(V_tcp_reass_zone, te);
249
			tp->t_segqlen--;
250
			V_tcp_reass_qsize--;
251
			return (0);
229
		}
252
		}
230
	}
253
	}
231
	TCPSTAT_INC(tcps_rcvoopack);
254
	TCPSTAT_INC(tcps_rcvoopack);

Return to bug 61744