From 8f5ebd2b5d31e88b63620e70c9582dbab2af57ae Mon Sep 17 00:00:00 2001 From: Aethernode Date: Sat, 20 Jun 2026 04:12:09 +0200 Subject: [PATCH 1/2] fix(sftp): handle channels concurrently to prevent 40s freeze with gvfs --- sftp/server.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sftp/server.go b/sftp/server.go index e9fa3d7f..265929b5 100644 --- a/sftp/server.go +++ b/sftp/server.go @@ -149,9 +149,11 @@ func (c *SFTPServer) AcceptInbound(conn net.Conn, config *ssh.ServerConfig) erro }(requests) if srv, ok := c.manager.Get(sconn.Permissions.Extensions["uuid"]); ok { - if err := c.Handle(sconn, srv, channel); err != nil { - return err - } + go func() { + if err := c.Handle(sconn, srv, channel); err != nil { + log.WithField("error", err).Error("sftp: error handling channel") + } + }() } } return nil From 08417f012b77b4790e2ece8b6e18746abba97ea0 Mon Sep 17 00:00:00 2001 From: Aethernode Date: Sat, 20 Jun 2026 04:14:50 +0200 Subject: [PATCH 2/2] fix(sftp): Add comment --- sftp/server.go | 1 + 1 file changed, 1 insertion(+) diff --git a/sftp/server.go b/sftp/server.go index 265929b5..add87e69 100644 --- a/sftp/server.go +++ b/sftp/server.go @@ -149,6 +149,7 @@ func (c *SFTPServer) AcceptInbound(conn net.Conn, config *ssh.ServerConfig) erro }(requests) if srv, ok := c.manager.Get(sconn.Permissions.Extensions["uuid"]); ok { + // fix(sftp): handle channels concurrently to prevent 40s freeze with gvfs go func() { if err := c.Handle(sconn, srv, channel); err != nil { log.WithField("error", err).Error("sftp: error handling channel")