Compare the two sockets' configured paths as paths, not strings

The check that the control socket and the info API are not configured
on one path compared the strings, so a doubled or trailing separator, or
a case difference on windows where pipe names are case-insensitive, got
past it and the second bind failed with a message about another nebula.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Matt RichardsonandClaude Fable 5.1 committed 2026-10-21 12:27:12 -04:00
1 parent c5c826d163
commit fdfcf3bd17
2 files changed
+21 -1

No files matched your search

+6
View File
@@ -198,6 +198,12 @@ func TestWireRefusesOnePathForBothAPIs(t *testing.T) {
t.Cleanup(eps.Stop)
assert.Empty(t, eps.Control.Path(), "the control socket does not take the info API's path")
assert.Empty(t, eps.Info.Path(), "the info API does not take the control socket's path")
// The same node spelled differently is the same node.
doubled := filepath.Join(filepath.Dir(shared), "") + "//" + filepath.Base(shared)
require.NoError(t, c.ReloadConfigString(section(shared, doubled)).Err)
assert.Empty(t, eps.Control.Path())
assert.Empty(t, eps.Info.Path())
_, err := os.Stat(shared)
assert.True(t, os.IsNotExist(err), "neither side bound the shared path")