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;
}
// We're committed now, send the request (or bail out)
- send_request(call, argv);
+ send_request(fd);
return fd;
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];
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;
// 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);
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!.