summaryrefslogtreecommitdiff
path: root/sys/net
diff options
context:
space:
mode:
authorDaniel Hartmeier <dhartmei@cvs.openbsd.org>2003-06-14 07:23:16 +0000
committerDaniel Hartmeier <dhartmei@cvs.openbsd.org>2003-06-14 07:23:16 +0000
commit8f40780108cfd8a164490298225073eb6796dcfc (patch)
tree9fc66cefad3ba5b132892a017158221b4cee74fd /sys/net
parent5298a1a563d9ebb010c75d3e9ac5830c9612a2ea (diff)
Use source's window scaling factor (instead of destination's) when
comparing ackskew, otherwise legitimate low acks can get blocked. Was triggered when asymmetric scale factors where used in combination with SACK. Report and logs provided by Peter Galbavy. ok frantzen@, henning@
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/pf.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/net/pf.c b/sys/net/pf.c
index 588410007e0..ac4eb59e79f 100644
--- a/sys/net/pf.c
+++ b/sys/net/pf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pf.c,v 1.363 2003/06/10 22:05:03 dhartmei Exp $ */
+/* $OpenBSD: pf.c,v 1.364 2003/06/14 07:23:15 dhartmei Exp $ */
/*
* Copyright (c) 2001 Daniel Hartmeier
@@ -3309,7 +3309,7 @@ pf_test_state_tcp(struct pf_state **state, int direction, struct ifnet *ifp,
/* Retrans: not more than one window back */
(ackskew >= -MAXACKWINDOW) &&
/* Acking not more than one reassembled fragment backwards */
- (ackskew <= (MAXACKWINDOW << dws))) {
+ (ackskew <= (MAXACKWINDOW << sws))) {
/* Acking not more than one window forward */
(*state)->packets++;
@@ -3458,7 +3458,7 @@ pf_test_state_tcp(struct pf_state **state, int direction, struct ifnet *ifp,
SEQ_GEQ(seq, src->seqlo - (dst->max_win << dws)) ?
' ': '2',
(ackskew >= -MAXACKWINDOW) ? ' ' : '3',
- (ackskew <= MAXACKWINDOW) ? ' ' : '4',
+ (ackskew <= (MAXACKWINDOW << sws)) ? ' ' : '4',
SEQ_GEQ(src->seqhi + MAXACKWINDOW, end) ?' ' :'5',
SEQ_GEQ(seq, src->seqlo - MAXACKWINDOW) ?' ' :'6');
}