diff options
author | Daniel Hartmeier <dhartmei@cvs.openbsd.org> | 2003-06-14 07:23:16 +0000 |
---|---|---|
committer | Daniel Hartmeier <dhartmei@cvs.openbsd.org> | 2003-06-14 07:23:16 +0000 |
commit | 8f40780108cfd8a164490298225073eb6796dcfc (patch) | |
tree | 9fc66cefad3ba5b132892a017158221b4cee74fd /sys/net | |
parent | 5298a1a563d9ebb010c75d3e9ac5830c9612a2ea (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.c | 6 |
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'); } |