From 60af9eae092b2f3ab64b4e6b1effb7496d3bde4e Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sat, 19 Jun 2021 15:12:39 +0200 Subject: [PATCH] Timeout waiting for identification line --- syndicate-ssh/new-server.rkt | 6 ++++-- syndicate-ssh/ssh-transport.rkt | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/syndicate-ssh/new-server.rkt b/syndicate-ssh/new-server.rkt index 1d6707d..e2ec9d5 100644 --- a/syndicate-ssh/new-server.rkt +++ b/syndicate-ssh/new-server.rkt @@ -44,8 +44,10 @@ (define local-identification #"SSH-2.0-RacketSSH_0.0") - (spawn #:name 'reader (ssh-reader conn-ds source)) - (spawn #:name 'writer (ssh-writer conn-ds sink local-identification)) + (spawn/link #:name 'reader (ssh-reader conn-ds ground-ds source)) + (spawn/link #:name 'writer (ssh-writer conn-ds sink local-identification)) + + (on-stop (stop-actor-system)) (at conn-ds (once diff --git a/syndicate-ssh/ssh-transport.rkt b/syndicate-ssh/ssh-transport.rkt index 9e3351b..0170c46 100644 --- a/syndicate-ssh/ssh-transport.rkt +++ b/syndicate-ssh/ssh-transport.rkt @@ -15,6 +15,7 @@ ssh-writer) (require bitsyntax) +(require syndicate/drivers/timer) (require syndicate/drivers/tcp) (require "crypto.rkt") @@ -260,7 +261,7 @@ ;; Encrypted Packet Input ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define (ssh-reader conn-ds source) +(define (ssh-reader conn-ds ground-ds source) (define input-handler #f) (define (update-input-handler #:on-data proc) (set! input-handler proc)) (make-sink #:initial-source source @@ -271,7 +272,13 @@ (update-input-handler #:on-data (lambda (remote-identification _mode) (send! conn-ds (ssh-identification-line remote-identification)) + (stop-facet identification-line-timeout-facet) (update-input-handler #:on-data handle-packet-header))) + (define identification-line-timeout-facet + (at ground-ds + (once [(timeout 10000) + (log-info "Timeout waiting for remote-identification") + (stop-current-facet)]))) (define packet-size-limit (default-packet-limit)) (define sequence-number 0)