On Fri, Feb 07, 2025 at 01:54:39AM +0100, Stefano Brivio wrote: > If we use glibc's perror(), we need to allow dup() and fcntl() in our > seccomp profiles, which are a bit too much for this simple helper. On > top of that, we would probably need a wrapper to avoid allocation for > translated messages. > > While at it: ECONNRESET is just a close() from passt, treat it like > EOF. > > Signed-off-by: Stefano Brivio Reviewed-by: David Gibson > --- > passt-repair.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/passt-repair.c b/passt-repair.c > index 3c3247b..d137a18 100644 > --- a/passt-repair.c > +++ b/passt-repair.c > @@ -95,7 +95,7 @@ int main(int argc, char **argv) > } > > if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { > - perror("Failed to create AF_UNIX socket"); > + fprintf(stderr, "Failed to create AF_UNIX socket: > %i\n", errno); We could use strerror_() here, couldn't we? > _exit(1); > } > > @@ -108,8 +108,12 @@ int main(int argc, char **argv) > loop: > ret = recvmsg(s, &msg, 0); > if (ret < 0) { > - perror("Failed to receive message"); > - _exit(1); > + if (errno == ECONNRESET) { > + ret = 0; > + } else { > + fprintf(stderr, "Failed to read message: %i\n", errno); > + _exit(1); > + } > } > > if (!ret) /* Done */ -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson