Use bit-string-take and bit-string-drop (new in racket-bitsyntax 4.1)

This commit is contained in:
Tony Garnock-Jones 2014-06-17 17:30:20 -04:00
parent 4de4180c67
commit 03a6455594
1 changed files with 3 additions and 6 deletions

View File

@ -418,8 +418,7 @@
(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)))) (dist (seq- ackn (buffer-seqn b))))
(define-values (discarded-acknowledged-data remaining-data) (define remaining-data (bit-string-drop (buffer-data b) (* dist 8))) ;; bit offset!
(bit-string-split-at (buffer-data b) (* dist 8))) ;; bit offset!
(struct-copy conn-state 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])]
[syn-acked? (or (conn-state-syn-acked? s) [syn-acked? (or (conn-state-syn-acked? s)
@ -448,10 +447,8 @@
;; ^ can only send SYN until SYN is acked ;; ^ can only send SYN until SYN is acked
pending-byte-count)) pending-byte-count))
(define segment-offset (if (conn-state-syn-acked? s) 0 1)) (define segment-offset (if (conn-state-syn-acked? s) 0 1))
(define-values (chunk0 remaining-data) (define chunk0 (bit-string-take (buffer-data b) (* segment-size 8))) ;; bit offset!
(bit-string-split-at (buffer-data b) (* segment-size 8))) ;; bit offset! (define chunk (bit-string-drop chunk0 (* segment-offset 8))) ;; bit offset!
(define-values (discarded-dummy-syn-data chunk)
(bit-string-split-at chunk0 (* segment-offset 8))) ;; bit offset!
(define ackn (next-expected-seqn s)) (define ackn (next-expected-seqn s))
(define flags (set)) (define flags (set))
(when ackn (when ackn