On Fri, Feb 21, 2025 at 09:41:07PM +0100, Martin Wilck wrote: > When connecting to the multipathd socket, try the pathname socket > first, then the abstract socket. Fail only if both connection attempts > fail. Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > --- > libmpathcmd/mpath_cmd.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c > index c7cf954..83cb6ad 100644 > --- a/libmpathcmd/mpath_cmd.c > +++ b/libmpathcmd/mpath_cmd.c > @@ -102,7 +102,10 @@ int mpath_connect__(int nonblocking) > size_t len; > struct sockaddr_un addr; > int flags = 0; > + const char *const names[2] = {PATHNAME_SOCKET, ABSTRACT_SOCKET}; > + int name_idx = 0; > > +retry: > fd = socket(AF_LOCAL, SOCK_STREAM, 0); > if (fd == -1) > return -1; > @@ -113,13 +116,17 @@ int mpath_connect__(int nonblocking) > (void)fcntl(fd, F_SETFL, flags|O_NONBLOCK); > } > > - len = mpath_fill_sockaddr__(&addr, ABSTRACT_SOCKET); > + len = mpath_fill_sockaddr__(&addr, names[name_idx]); > if (connect(fd, (struct sockaddr *)&addr, len) == -1) { > int err = errno; > > close(fd); > - errno = err; > - return -1; > + if (++name_idx == 1) > + goto retry; > + else { > + errno = err; > + return -1; > + } > } > > if (nonblocking && flags != -1) > -- > 2.48.1