summaryrefslogtreecommitdiff
path: root/sys/src/cmd/upas
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2023-03-25 19:15:14 +0000
committerOri Bernstein <ori@eigenstate.org>2023-03-25 19:15:14 +0000
commitb55b1f31e139271852c3581924ddc92a10f54883 (patch)
tree7274a5516e728b682c9de0ff01e78e27cf913ce2 /sys/src/cmd/upas
parentb8ae7708fb3ef3acbb30ccf3181897f8157c18de (diff)
upas/runq: wait for bounce sender to exit (thanks grizi)
when we send a return message, we need to wait for the message to exit before we clean up the state files.
Diffstat (limited to 'sys/src/cmd/upas')
-rw-r--r--sys/src/cmd/upas/q/runq.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/src/cmd/upas/q/runq.c b/sys/src/cmd/upas/q/runq.c
index 159cb1c52..0112c659c 100644
--- a/sys/src/cmd/upas/q/runq.c
+++ b/sys/src/cmd/upas/q/runq.c
@@ -577,6 +577,7 @@ returnmail(char **av, Wdir *w, char *name, char *msg)
char buf[256], attachment[Pathlen], *sender;
int fd, pfd[2];
long n;
+ Waitmsg *wm;
String *s;
if(av[1] == 0 || av[2] == 0){
@@ -597,7 +598,7 @@ returnmail(char **av, Wdir *w, char *name, char *msg)
return -1;
}
- switch(rfork(RFFDG|RFPROC|RFENVG|RFNOWAIT)){
+ switch(rfork(RFFDG|RFPROC|RFENVG)){
case -1:
logit("runq - fork failed", w, name, av);
return -1;
@@ -633,12 +634,16 @@ returnmail(char **av, Wdir *w, char *name, char *msg)
break;
if(write(pfd[1], buf, n) != n){
close(fd);
+ wm = wait();
+ free(wm);
return -1;
}
}
close(fd);
}
close(pfd[1]);
+ wm = wait();
+ free(wm);
return 0;
}