chiark / gitweb /
prefork-interp: fixes and tests
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Aug 2022 19:06:23 +0000 (20:06 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Aug 2022 20:21:10 +0000 (21:21 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
cprogs/prefork-interp.c
perl/prefork-interp-test

index 63bff8b9a1355a26820526a5022434b898decf93..7e350870f872395aa92c8b9bb215737fc6309da0 100644 (file)
 
 const char our_name[] = "prefork-interp";
 
-struct sockaddr_un sun;
+struct sockaddr_un sockaddr_sun;
 
 #define ACK_BYTE '\n'
 
-static struct sockaddr_un socket_sun;
 static const char *const *executor_argv;
 
 void fusagemessage(FILE *f) {
@@ -281,8 +280,8 @@ static FILE *connect_existing(void) {
   fd = socket(AF_UNIX, SOCK_STREAM, 0);
   if (fd==-1) diee("socket() for client");
 
-  socklen_t salen = sizeof(sun);
-  r = connect(fd, (const struct sockaddr*)&socket_sun, salen);
+  socklen_t salen = sizeof(sockaddr_sun);
+  r = connect(fd, (const struct sockaddr*)&sockaddr_sun, salen);
   if (r==-1) {
     if (errno==ECONNREFUSED || errno==ENOENT) goto x_garbage;
     diee("connect() %s", socket_path);
@@ -351,8 +350,8 @@ static FILE *connect_or_spawn(void) {
   int sfd = socket(AF_UNIX, SOCK_STREAM, 0);
   if (sfd<0) diee("socket() for new listener");
 
-  socklen_t salen = sizeof(sun);
-  r= bind(sfd, (const struct sockaddr*)&socket_sun, salen);
+  socklen_t salen = sizeof(sockaddr_sun);
+  r= bind(sfd, (const struct sockaddr*)&sockaddr_sun, salen);
   if (r<0) diee("bind() on new listener");
 
   // We never want callers to get ECONNREFUSED.  But:
@@ -410,10 +409,10 @@ int main(int argc_unused, const char *const *argv) {
   make_executor_argv(argv);
 
   find_socket_path();
-  FILLZERO(sun);
-  sun.sun_family = AF_UNIX;
-  assert(strlen(socket_path) <= sizeof(sun.sun_path));
-  strncpy(sun.sun_path, socket_path, sizeof(sun.sun_path));
+  FILLZERO(sockaddr_sun);
+  sockaddr_sun.sun_family = AF_UNIX;
+  assert(strlen(socket_path) <= sizeof(sockaddr_sun.sun_path));
+  strncpy(sockaddr_sun.sun_path, socket_path, sizeof(sockaddr_sun.sun_path));
 
   FILE *call_sock = connect_or_spawn();
   uint32_t status;
index 779190c6a089fa8aeae9ade9f56712c3d544f39d..2111751185a905a84b5548832cd2d22e4e9134d8 100755 (executable)
@@ -4,13 +4,13 @@ use strict;
 BEGIN { unshift @INC, '.' }
 use Proc::Prefork;
 
-print STDERR "BEGIN - STDERR\n" and flush STDERR or die $!;
-print STDOUT "BEGIN - STDOUT\n" and flush STDOUT or die $!;
+print STDERR "BEGIN - STDERR - @ARGV\n" and flush STDERR or die $!;
+print STDOUT "BEGIN - STDOUT - @ARGV\n" and flush STDOUT or die $!;
 
 initialisation_complete();
 
-print STDERR "AFTER - STDERR\n" and flush STDERR or die $!;
-print STDOUT "AFTER - STDOUT\n" and flush STDOUT or die $!;
+print STDERR "AFTER - STDERR - @ARGV\n" and flush STDERR or die $!;
+print STDOUT "AFTER - STDOUT - @ARGV\n" and flush STDOUT or die $!;
 
 while (<STDIN>) {
   last unless m{\S};