From 04f03f380c5cc9413d3555c1740d7549052034bc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 17 Jul 2022 18:27:11 +0100 Subject: [PATCH] prefork-interp: wip compile Signed-off-by: Ian Jackson --- cprogs/prefork-interp.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/cprogs/prefork-interp.c b/cprogs/prefork-interp.c index 65aa679..9e3c8fd 100644 --- a/cprogs/prefork-interp.c +++ b/cprogs/prefork-interp.c @@ -262,15 +262,15 @@ static int connect_existing(void) { if (fd==-1) diee("socket() for client"); socklen_t salen = sizeof(sun); - r = connect(client, (const struct sockaddr*)&socket_sun, salen); + r = connect(fd, (const struct sockaddr*)&socket_sun, salen); if (r==-1) { - if (errno==ECONNREFUSED || errno==ENOENT) goto x_garbgae; + if (errno==ECONNREFUSED || errno==ENOENT) goto x_garbage; diee("connect() %s", socket_path); } for (;;) { char ack; - sr = read(fd, &ack, 1); + size_t sr = read(fd, &ack, 1); if (sr == -1) { if (errno==ECONNRESET) goto x_garbage; if (errno==EINTR) continue; @@ -282,7 +282,7 @@ static int connect_existing(void) { } // We're committed now, send the request (or bail out) - send_request(call, argv); + send_request(fd); return fd; @@ -291,9 +291,8 @@ static int connect_existing(void) { return -1; } -static void become_setup(int sfd, int fake_pair[2]) - __attribute__((noreturn)) -{ +static __attribute__((noreturn)) +void become_setup(int sfd, int fake_pair[2]) { close(fake_pair[0]); int call_fd = fake_pair[1]; @@ -304,14 +303,16 @@ static void become_setup(int sfd, int fake_pair[2]) if (dup2(null_0, 0)) diee("dup2 /dev/null onto stdin"); if (dup2(2, 1) != 1) die("dup2 stderr onto stdout"); - putenv(asprintf("PREFORK_INTERP=%d,%d,%d,%d,%s", - sfd, call_fd, fd0_save, fd1_save, socket_path)); + putenv(m_asprintf("PREFORK_INTERP=%d,%d,%d,%d,%s", + sfd, call_fd, fd0_save, fd1_save, socket_path)); - execvp(executor_argv[0], executor_argv); + execvp(executor_argv[0], (char**)executor_argv); diee("execute %s", executor_argv[0]); } static int connect_or_spawn(void) { + int r; + int fd = connect_existing(); if (fd >= 0) return fd; @@ -321,8 +322,8 @@ static int connect_or_spawn(void) { // We must start a fresh one, and we hold the lock - r = unlink(socketpath); - if (r<0) diee("failed to remove stale socket %s", socketpath); + r = unlink(socket_path); + if (r<0) diee("failed to remove stale socket %s", socket_path); int fake_pair[2]; r = socketpair(AF_UNIX, SOCK_STREAM, 0, fake_pair); @@ -331,8 +332,8 @@ static int connect_or_spawn(void) { int sfd = socket(AF_UNIX, SOCK_STREAM, 0); if (sfd<0) diee("socket() for new listener"); - salen_t salen = sizeof(sun); - r= bind(sfd, (const struct sockaddr*)&socket_sun, saledn); + socklen_t salen = sizeof(sun); + r= bind(sfd, (const struct sockaddr*)&socket_sun, salen); if (r<0) diee("bind() on new listener"); // We never want callers to get ECONNREFUSED!. -- 2.30.2