diff options
author | Ori Bernstein <ori@eigenstate.org> | 2023-03-25 19:15:14 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2023-03-25 19:15:14 +0000 |
commit | b55b1f31e139271852c3581924ddc92a10f54883 (patch) | |
tree | 7274a5516e728b682c9de0ff01e78e27cf913ce2 /sys | |
parent | b8ae7708fb3ef3acbb30ccf3181897f8157c18de (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')
-rw-r--r-- | sys/src/cmd/upas/q/runq.c | 7 |
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; } |