aboutsummaryrefslogtreecommitdiff
path: root/tests/server/tftpd.c
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2009-11-26 10:15:08 +0000
committerYang Tse <yangsita@gmail.com>2009-11-26 10:15:08 +0000
commitcbd527843b4d0d04e33bb57d99c8e6139100db80 (patch)
tree5ac6f83ea3b59f6d280eb9d8024bafed5585745e /tests/server/tftpd.c
parentfba233bb34d768f41e8ff35af54ba637f61eef2b (diff)
Only attempt to clear the server-logs lock when previously set by this same server.
Diffstat (limited to 'tests/server/tftpd.c')
-rw-r--r--tests/server/tftpd.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/tests/server/tftpd.c b/tests/server/tftpd.c
index e0c2d19e2..1f6418f59 100644
--- a/tests/server/tftpd.c
+++ b/tests/server/tftpd.c
@@ -103,6 +103,7 @@
static bool use_ipv6 = FALSE;
#endif
static const char *ipv_inuse = "IPv4";
+static int serverlogslocked = 0;
struct testcase {
char *buffer; /* holds the file data to send to the client */
@@ -546,6 +547,7 @@ int main(int argc, char **argv)
}
set_advisor_read_lock(SERVERLOGS_LOCK);
+ serverlogslocked = 1;
from.sin_family = AF_INET;
@@ -574,13 +576,19 @@ int main(int argc, char **argv)
}
sclose(peer);
- clear_advisor_read_lock(SERVERLOGS_LOCK);
+ if(serverlogslocked) {
+ serverlogslocked = 0;
+ clear_advisor_read_lock(SERVERLOGS_LOCK);
+ }
logmsg("end of one transfer");
}
- clear_advisor_read_lock(SERVERLOGS_LOCK);
+ if(serverlogslocked) {
+ serverlogslocked = 0;
+ clear_advisor_read_lock(SERVERLOGS_LOCK);
+ }
return result;
}
@@ -766,7 +774,10 @@ static void timer(int signum)
timeout += rexmtval;
if(timeout >= maxtimeout) {
- clear_advisor_read_lock(SERVERLOGS_LOCK);
+ if(serverlogslocked) {
+ serverlogslocked = 0;
+ clear_advisor_read_lock(SERVERLOGS_LOCK);
+ }
exit(1);
}
#ifdef HAVE_SIGSETJMP