Matt Johnston
Matt Johnston
progress() might need to send output packets but the `TrafSend` may not have space. Would it be OK to check for empty `TrafSend` at the top of progress()?
Channel cleanup is definitely not all correct, in terms of EOF->close, and shutting down one direction before the other.
Perhaps `DispatchEvent` could be renamed `EventId`. `disconnected` would instead map to an `Event`.
Currently it's assumed an application will exit if an event callback returns an error (for example `.hostkeys()?` if buffer space isn't available). It might be worth storing that error somewhere...