diff --git a/cmd/olliesrv/internal/fs/newroot.go b/cmd/olliesrv/internal/fs/newroot.go index 91834b2..b7574b4 100644 --- a/cmd/olliesrv/internal/fs/newroot.go +++ b/cmd/olliesrv/internal/fs/newroot.go @@ -41,7 +41,12 @@ func NewRoot(cfg Config) *Tree { helpSpec = &spec tree := virtfs.BuildTree(spec) - // Restore persisted sessions from disk. + return tree +} + +// RestoreSessions restores persisted sessions from disk. +// Must be called after the 9P listener is ready. +func RestoreSessions() { for _, r := range session.RestoreAllSessions() { for _, ra := range r.Agents { if ag := r.Session.FindAgent(ra.ID); ag != nil { @@ -50,6 +55,4 @@ func NewRoot(cfg Config) *Tree { } } } - - return tree } diff --git a/cmd/olliesrv/main.go b/cmd/olliesrv/main.go index 0337957..580ecbc 100644 --- a/cmd/olliesrv/main.go +++ b/cmd/olliesrv/main.go @@ -108,6 +108,9 @@ func runServer(sockPath string) { fmt.Printf("olliesrv listening on %s\n", sockPath) + // Restore sessions now that the 9P listener is ready. + fs.RestoreSessions() + var tcpListener net.Listener if *tcpAddr != "" { tcpListener, err = net.Listen("tcp", *tcpAddr)