From fff4b05036bc11f4b67f44b9f50d7f7d00549b8b Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 9 Jun 2021 14:53:41 +0200 Subject: [PATCH] Run packet writer in a turn to add proper error handling --- syndicate/relay.rkt | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/syndicate/relay.rkt b/syndicate/relay.rkt index 55b07cf..272be9a 100644 --- a/syndicate/relay.rkt +++ b/syndicate/relay.rkt @@ -189,16 +189,18 @@ (when (null? (tunnel-relay-pending-turn-rev tr)) (queue-task! (actor-engine (facet-actor (tunnel-relay-facet tr))) (lambda () - (define pending (Turn (reverse (tunnel-relay-pending-turn-rev tr)))) - (set-tunnel-relay-pending-turn-rev! tr '()) - (log-info "OUT (parsed): ~v" pending) - (log-info "OUT (raw): ~v" (->preserve pending)) - (parse-Turn! (->preserve pending)) - ((tunnel-relay-packet-writer tr) - (preserve->bytes (->preserve pending) - #:canonicalizing? #t - #:write-annotations? #f - #:encode-embedded encode-embedded:protocol))))) + (turn! (tunnel-relay-facet tr) + (action () + (define pending (Turn (reverse (tunnel-relay-pending-turn-rev tr)))) + (set-tunnel-relay-pending-turn-rev! tr '()) + (log-info "OUT (parsed): ~v" pending) + (log-info "OUT (raw): ~v" (->preserve pending)) + (parse-Turn! (->preserve pending)) + ((tunnel-relay-packet-writer tr) + (preserve->bytes (->preserve pending) + #:canonicalizing? #t + #:write-annotations? #f + #:encode-embedded encode-embedded:protocol))))))) (set-tunnel-relay-pending-turn-rev! tr (cons (TurnEvent (Oid oid) event) (tunnel-relay-pending-turn-rev tr))))