BUG/MINOR: unix: Make sure we can transfer abns sockets on seamless reload.
When checking if a socket we got from the parent is suitable for a listener,
we just checked that the path matched sockname.tmp, however this is
unsuitable for abns sockets, where we don't have to create a temporary
file and rename it later.
To detect that, check that the first character of the sun_path is 0 for
both, and if so, that &sun_path[1] is the same too.
This should be backported to 1.8.
diff --git a/src/proto_uxst.c b/src/proto_uxst.c
index 9fc50df..ab788bd 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -146,7 +146,12 @@
after_sockname++;
if (!strcmp(after_sockname, ".tmp"))
break;
- }
+ /* abns sockets sun_path starts with a \0 */
+ } else if (un1->sun_path[0] == 0
+ && un2->sun_path[0] == 0
+ && !memcmp(&un1->sun_path[1], &un2->sun_path[1],
+ sizeof(un1->sun_path) - 1))
+ break;
}
xfer_sock = xfer_sock->next;
}