Add in missing bounds check when pruning acked data.
This commit is contained in:
parent
8a3f50941f
commit
594add5939
4
tcp.rkt
4
tcp.rkt
|
@ -426,9 +426,11 @@
|
||||||
(if (not ack?)
|
(if (not ack?)
|
||||||
(transition s '())
|
(transition s '())
|
||||||
(let* ((b (conn-state-outbound s))
|
(let* ((b (conn-state-outbound s))
|
||||||
|
(base (buffer-seqn b))
|
||||||
(limit (seq+ (buffer-seqn b) (bit-string-byte-count (buffer-data b))))
|
(limit (seq+ (buffer-seqn b) (bit-string-byte-count (buffer-data b))))
|
||||||
(ackn (if (seq> ackn limit) limit ackn))
|
(ackn (if (seq> ackn limit) limit ackn))
|
||||||
(dist (seq- ackn (buffer-seqn b))))
|
(ackn (if (seq> base ackn) base ackn))
|
||||||
|
(dist (seq- ackn base)))
|
||||||
(define remaining-data (bit-string-drop (buffer-data b) (* dist 8))) ;; bit offset!
|
(define remaining-data (bit-string-drop (buffer-data b) (* dist 8))) ;; bit offset!
|
||||||
(define new-s (struct-copy conn-state s
|
(define new-s (struct-copy conn-state s
|
||||||
[outbound (struct-copy buffer b [data remaining-data] [seqn ackn])]
|
[outbound (struct-copy buffer b [data remaining-data] [seqn ackn])]
|
||||||
|
|
Loading…
Reference in New Issue