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.
This commit is contained in:
parent
beadf8463a
commit
a01829991f
|
|
@ -585,9 +585,9 @@ func (s *Server) pathType(path string) string {
|
||||||
if sess.Core == nil {
|
if sess.Core == nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
// Validate agent Name
|
// Validate target agent by name or ID.
|
||||||
agentName := sess.Core.Agent().Name()
|
ag := sess.Core.FindAgent(parts[2])
|
||||||
if agentName == "" || parts[2] != agentName {
|
if ag == nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
// /session/{id}/agent/{aid} — directory
|
// /session/{id}/agent/{aid} — directory
|
||||||
|
|
@ -600,7 +600,7 @@ func (s *Server) pathType(path string) string {
|
||||||
}
|
}
|
||||||
// /session/{id}/agent/{aid}/proc/{pid} — verify exists
|
// /session/{id}/agent/{aid}/proc/{pid} — verify exists
|
||||||
if len(parts) == 5 && parts[3] == "proc" {
|
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] {
|
if fmt.Sprintf("%d", p.PID) == parts[4] {
|
||||||
return "file"
|
return "file"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue