diff options
author | Runxi Yu <me@runxiyu.org> | 2025-08-17 04:08:24 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-08-17 04:08:24 +0800 |
commit | 3b0a2adf296791bdbd0c1b0fba6399910c1fac82 (patch) | |
tree | 0725ce585922a47a86e58f5961df3571a2c3b6c1 /forged/internal/incoming/ssh/ssh.go | |
parent | Add some stubs (diff) | |
download | forge-3b0a2adf296791bdbd0c1b0fba6399910c1fac82.tar.gz forge-3b0a2adf296791bdbd0c1b0fba6399910c1fac82.tar.zst forge-3b0a2adf296791bdbd0c1b0fba6399910c1fac82.zip |
Context fixes
Diffstat (limited to 'forged/internal/incoming/ssh/ssh.go')
-rw-r--r-- | forged/internal/incoming/ssh/ssh.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/forged/internal/incoming/ssh/ssh.go b/forged/internal/incoming/ssh/ssh.go index b0269e5..efa24f1 100644 --- a/forged/internal/incoming/ssh/ssh.go +++ b/forged/internal/incoming/ssh/ssh.go @@ -1,6 +1,7 @@ package ssh import ( + "context" "fmt" "os" @@ -53,8 +54,19 @@ func New(config Config) (server *Server, err error) { return } -func (server *Server) Run() (err error) { +func (server *Server) Run(ctx context.Context) (err error) { listener, err := misc.Listen(server.net, server.addr) + defer func() { + _ = listener.Close() + }() + + go func() { + <-ctx.Done() + _ = server.gliderServer.Close() + _ = listener.Close() // unnecessary? + // TODO: Log the error + }() + if err = server.gliderServer.Serve(listener); err != nil { return fmt.Errorf("serve SSH: %w", err) } |