struct addrinfo hints, *res;
int rc, l, conn, on, datamode;
FILE *f, *pid;
+ pid_t child;
fd_set readfd;
struct stat st;
struct timeval tv;
}
/*
+ * Now we fork() and print out the process ID of our child
+ * for scripts to use. Once we do that, then exit.
+ */
+
+ child = fork();
+
+ switch (child) {
+ case -1:
+ fprintf(stderr, "Unable to fork child: %s\n", strerror(errno));
+ exit(1);
+ break;
+ case 0:
+ /*
+ * Close stdin & stdout, otherwise people can
+ * think we're still doing stuff. For now leave stderr
+ * open.
+ */
+ fclose(stdin);
+ fclose(stdout);
+ break;
+ default:
+ printf("%ld\n", (long) child);
+ exit(0);
+ }
+
+ /*
* Now that our socket & files are set up, wait 30 seconds for
* a connection. If there isn't one, then exit.
*/
*/
if (strcmp(line, "QUIT") == 0) {
+ fclose(f);
+ f = NULL;
putsmtp(conn, "221 Later alligator!");
close(conn);
break;
}
}
- fclose(f);
+ if (f)
+ fclose(f);
exit(0);
}
# $4 contains the message body.
test_mhmail ()
{
- "${MH_OBJ_DIR}/test/fakesmtp" "$actual" $localport &
- pid="$!"
-
- # The server doesn't always come up fast enough, so sleep and
- # retry a few times if it fails...
- status=1
- for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
- if [ $3 = '|' ]; then
- if printf '%s' "$4" | mhmail recipient@example.com $2 \
- -server 127.0.0.1 -port $localport; then
- status=0
- break
- fi
- else
- if mhmail recipient@example.com $2 -body "$4" \
- -server 127.0.0.1 -port $localport; then
- status=0
- break
- fi
- fi
- sleep 2
- done
- if [ $status -ne 0 ]; then
- printf '%s: mhmail failed, was fakesmtp given enough time to start?\n' \
- "$0" >&2
- exit 1
+ pid=`"${MH_OBJ_DIR}/test/fakesmtp" "$actual" $localport`
+
+ if [ $3 = '|' ]; then
+ printf '%s' "$4" | mhmail recipient@example.com $2 \
+ -server 127.0.0.1 -port $localport
+ else
+ mhmail recipient@example.com $2 -body "$4" \
+ -server 127.0.0.1 -port $localport
fi
- wait ${pid}
-
#
# It's hard to calculate the exact Date: header post is going to
# use, so we'll just use sed to remove the actual date so we can easily
# $3: optional switches for send
test_post ()
-{ "${MH_OBJ_DIR}/test/fakesmtp" "$1" $localport &
- pid="$!"
-
- # The server doesn't always come up fast enough, so sleep and
- # retry a few times if it fails...
- status=1
- for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
- if send -draft -server 127.0.0.1 -port $localport $3
- then
- status=0
- break
- fi
- sleep 2
- done
- if [ $status -ne 0 ]; then
- printf '%s: send failed, was fakesmtp given enough time to start?\n' \
- "$0" >&2
- exit 1
- fi
-
- wait ${pid}
+{ pid=`"${MH_OBJ_DIR}/test/fakesmtp" "$1" $localport`
+
+ send -draft -server 127.0.0.1 -port $localport $3 || exit 1
#
# It's hard to calculate the exact Date: header post is going to