summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_timewait.c
diff options
context:
space:
mode:
authorjesper <jesper@FreeBSD.org>2001-03-28 14:13:19 +0000
committerjesper <jesper@FreeBSD.org>2001-03-28 14:13:19 +0000
commit3c2e206a4140198a1411caaddb8cec7d88df9ea5 (patch)
treeabb91ce7e944746c52515c8a1ca827c7a19ba087 /sys/netinet/tcp_timewait.c
parentde858d3f3800ce4b503f38487fb57684daf65447 (diff)
downloadFreeBSD-src-3c2e206a4140198a1411caaddb8cec7d88df9ea5.zip
FreeBSD-src-3c2e206a4140198a1411caaddb8cec7d88df9ea5.tar.gz
MFC candidate.
Change code from PRC_UNREACH_ADMIN_PROHIB to PRC_UNREACH_PORT for ICMP_UNREACH_PROTOCOL and ICMP_UNREACH_PORT And let TCP treat PRC_UNREACH_PORT like PRC_UNREACH_ADMIN_PROHIB This should fix the case where port unreachables for udp returned ENETRESET instead of ECONNREFUSED Problem found by: Bill Fenner <fenner@research.att.com> Reviewed by: jlemon
Diffstat (limited to 'sys/netinet/tcp_timewait.c')
-rw-r--r--sys/netinet/tcp_timewait.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c
index 8f339e4..2afff53 100644
--- a/sys/netinet/tcp_timewait.c
+++ b/sys/netinet/tcp_timewait.c
@@ -987,7 +987,8 @@ tcp_ctlinput(cmd, sa, vip)
if (cmd == PRC_QUENCH)
notify = tcp_quench;
- else if (icmp_may_rst && cmd == PRC_UNREACH_ADMIN_PROHIB && ip)
+ else if (icmp_may_rst && (cmd == PRC_UNREACH_ADMIN_PROHIB ||
+ cmd == PRC_UNREACH_PORT) && ip)
notify = tcp_drop_syn_sent;
else if (cmd == PRC_MSGSIZE)
notify = tcp_mtudisc;
OpenPOWER on IntegriCloud