From b4dd15bd6fc264cfcbae9b84c0775f25987c0f78 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Wed, 6 Jun 2018 18:34:34 +0200 Subject: [PATCH] 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. --- src/proto_uxst.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/proto_uxst.c b/src/proto_uxst.c index 9fc50dff4..ab788bde7 100644 --- a/src/proto_uxst.c +++ b/src/proto_uxst.c @@ -146,7 +146,12 @@ static int uxst_find_compatible_fd(struct listener *l) 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; }