From a01829991fb457fcd1e3a91eecca37003884e499 Mon Sep 17 00:00:00 2001 From: Ollie Agent Date: Sat, 1 Aug 2026 22:03:41 +0200 Subject: [PATCH] olliesrv: route agent paths by FindAgent, not active agent The 9P server path classifier still validated /session/{id}/agent/{aid} against sess.Core.Agent().Name(), which leaked single-agent semantics into multi-agent routing. This broke per-agent paths even when the per-agent file trees were otherwise correct. Fix route/type validation to resolve the requested agent with FindAgent(), and use that specific agent for /proc PID checks. --- cmd/olliesrv/server.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/olliesrv/server.go b/cmd/olliesrv/server.go index 56ca5e0..cf5f9ea 100644 --- a/cmd/olliesrv/server.go +++ b/cmd/olliesrv/server.go @@ -585,9 +585,9 @@ func (s *Server) pathType(path string) string { if sess.Core == nil { return "" } - // Validate agent Name - agentName := sess.Core.Agent().Name() - if agentName == "" || parts[2] != agentName { + // Validate target agent by name or ID. + ag := sess.Core.FindAgent(parts[2]) + if ag == nil { return "" } // /session/{id}/agent/{aid} — directory @@ -600,7 +600,7 @@ func (s *Server) pathType(path string) string { } // /session/{id}/agent/{aid}/proc/{pid} — verify exists if len(parts) == 5 && parts[3] == "proc" { - for _, p := range sess.Core.Agent().ListDetached() { + for _, p := range ag.ListDetached() { if fmt.Sprintf("%d", p.PID) == parts[4] { return "file" }