diff options
-rw-r--r-- | sys/netinet/tcp_input.c | 7 | ||||
-rw-r--r-- | sys/netinet/tcp_reass.c | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 110a870..31f9b05 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1463,7 +1463,12 @@ trimthenstep6: tcpstat.tcps_rcvduppack++; tcpstat.tcps_rcvdupbyte += tlen; tcpstat.tcps_pawsdrop++; - goto dropafterack; + if (tlen) { + goto dropafterack; + } else { + printf("PAWS ack-on-ack loop avoided\n"); + goto drop; + } } } diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c index 110a870..31f9b05 100644 --- a/sys/netinet/tcp_reass.c +++ b/sys/netinet/tcp_reass.c @@ -1463,7 +1463,12 @@ trimthenstep6: tcpstat.tcps_rcvduppack++; tcpstat.tcps_rcvdupbyte += tlen; tcpstat.tcps_pawsdrop++; - goto dropafterack; + if (tlen) { + goto dropafterack; + } else { + printf("PAWS ack-on-ack loop avoided\n"); + goto drop; + } } } |