svn commit: r188992 - head/sys/netinet
Robert Watson
rwatson at FreeBSD.org
Tue Feb 24 03:17:50 PST 2009
Author: rwatson
Date: Tue Feb 24 11:17:50 2009
New Revision: 188992
URL: http://svn.freebsd.org/changeset/base/188992
Log:
In tcp_usr_shutdown() and tcp_usr_send(), I missed converting NULL
checks for the tcpcb, previously used to detect complete disconnection,
with INP_DROPPED checks. Correct that, preventing shutdown() from
improperly generating a TCP segment with destination IP and port of
0.0.0.0:0.
PR: kern/132050
Reported by: david gueluy <david.gueluy at netasq.com>
MFC after: 3 weeks
Modified:
head/sys/netinet/tcp_usrreq.c
Modified: head/sys/netinet/tcp_usrreq.c
==============================================================================
--- head/sys/netinet/tcp_usrreq.c Tue Feb 24 10:48:15 2009 (r188991)
+++ head/sys/netinet/tcp_usrreq.c Tue Feb 24 11:17:50 2009 (r188992)
@@ -695,7 +695,8 @@ tcp_usr_shutdown(struct socket *so)
TCPDEBUG1();
socantsendmore(so);
tcp_usrclosed(tp);
- error = tcp_output_disconnect(tp);
+ if (!(inp->inp_vflag & INP_DROPPED))
+ error = tcp_output_disconnect(tp);
out:
TCPDEBUG2(PRU_SHUTDOWN);
@@ -828,7 +829,7 @@ tcp_usr_send(struct socket *so, int flag
INP_INFO_WUNLOCK(&V_tcbinfo);
headlocked = 0;
}
- if (tp != NULL) {
+ if (!(inp->inp_vflag & INP_DROPPED)) {
if (flags & PRUS_MORETOCOME)
tp->t_flags |= TF_MORETOCOME;
error = tcp_output_send(tp);
More information about the svn-src-head
mailing list