summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2010-05-27 15:28:55 +0000
committerrwatson <rwatson@FreeBSD.org>2010-05-27 15:28:55 +0000
commitb7cd561c87e1dc5ef6c6f30253b92e4700deba0b (patch)
treee0a71591b8aba4cfb7ffc84d3f44758ee4e3ada8 /tools
parentc7e8976175130d7fea391747df8b3bbd9ce02285 (diff)
downloadFreeBSD-src-b7cd561c87e1dc5ef6c6f30253b92e4700deba0b.zip
FreeBSD-src-b7cd561c87e1dc5ef6c6f30253b92e4700deba0b.tar.gz
Correct several nits/problems in the unix_close_race regression test.
Submitted by: Mikolaj Golub <to.my.trociny at gmail.com> MFC after: 3 days
Diffstat (limited to 'tools')
-rw-r--r--tools/regression/sockets/unix_close_race/unix_close_race.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/tools/regression/sockets/unix_close_race/unix_close_race.c b/tools/regression/sockets/unix_close_race/unix_close_race.c
index 5a8dde3..97783e3 100644
--- a/tools/regression/sockets/unix_close_race/unix_close_race.c
+++ b/tools/regression/sockets/unix_close_race/unix_close_race.c
@@ -75,8 +75,8 @@ main(int argc, char **argv)
warnx("SMP not present, test may be unable to trigger race");
/*
- * Create a UNIX domain socket that the parent will repeatedly
- * accept() from, and that the child will repeatedly connect() to.
+ * Create a UNIX domain socket that the child will repeatedly
+ * accept() from, and that the parent will repeatedly connect() to.
*/
if ((listenfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0)
err(1, "parent: socket error");
@@ -104,13 +104,19 @@ main(int argc, char **argv)
servaddr.sun_family = AF_LOCAL;
strcpy(servaddr.sun_path, UNIXSTR_PATH);
for (counter = 0; counter < LOOPS; counter++) {
- if ((connfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0)
- err(1, "child: socket error");
+ if ((connfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) {
+ (void)kill(pid, SIGTERM);
+ err(1, "parent: socket error");
+ }
if (connect(connfd, (struct sockaddr *)&servaddr,
- sizeof(servaddr)) < 0)
- err(1, "child: connect error");
- if (close(connfd) < 0)
- err(1, "child: close error");
+ sizeof(servaddr)) < 0) {
+ (void)kill(pid, SIGTERM);
+ err(1, "parent: connect error");
+ }
+ if (close(connfd) < 0) {
+ (void)kill(pid, SIGTERM);
+ err(1, "parent: close error");
+ }
usleep(USLEEP);
}
(void)kill(pid, SIGTERM);
@@ -122,9 +128,9 @@ main(int argc, char **argv)
for ( ; ; ) {
if ((connfd = accept(listenfd,
(struct sockaddr *)NULL, NULL)) < 0)
- err(1, "parent: accept error");
+ err(1, "child: accept error");
if (close(connfd) < 0)
- err(1, "parent: close error");
+ err(1, "child: close error");
}
}
printf("OK\n");
OpenPOWER on IntegriCloud