Run packet writer in a turn to add proper error handling

This commit is contained in:
Tony Garnock-Jones 2021-06-09 14:53:41 +02:00
parent c40ba51a29
commit fff4b05036
1 changed files with 12 additions and 10 deletions

View File

@ -189,16 +189,18 @@
(when (null? (tunnel-relay-pending-turn-rev tr)) (when (null? (tunnel-relay-pending-turn-rev tr))
(queue-task! (actor-engine (facet-actor (tunnel-relay-facet tr))) (queue-task! (actor-engine (facet-actor (tunnel-relay-facet tr)))
(lambda () (lambda ()
(define pending (Turn (reverse (tunnel-relay-pending-turn-rev tr)))) (turn! (tunnel-relay-facet tr)
(set-tunnel-relay-pending-turn-rev! tr '()) (action ()
(log-info "OUT (parsed): ~v" pending) (define pending (Turn (reverse (tunnel-relay-pending-turn-rev tr))))
(log-info "OUT (raw): ~v" (->preserve pending)) (set-tunnel-relay-pending-turn-rev! tr '())
(parse-Turn! (->preserve pending)) (log-info "OUT (parsed): ~v" pending)
((tunnel-relay-packet-writer tr) (log-info "OUT (raw): ~v" (->preserve pending))
(preserve->bytes (->preserve pending) (parse-Turn! (->preserve pending))
#:canonicalizing? #t ((tunnel-relay-packet-writer tr)
#:write-annotations? #f (preserve->bytes (->preserve pending)
#:encode-embedded encode-embedded:protocol))))) #:canonicalizing? #t
#:write-annotations? #f
#:encode-embedded encode-embedded:protocol)))))))
(set-tunnel-relay-pending-turn-rev! tr (cons (TurnEvent (Oid oid) event) (set-tunnel-relay-pending-turn-rev! tr (cons (TurnEvent (Oid oid) event)
(tunnel-relay-pending-turn-rev tr)))) (tunnel-relay-pending-turn-rev tr))))