diff options
author | Guido G?nther <agx@sigxcpu.org> | 2016-01-09 07:04:41 -0800 |
---|---|---|
committer | Guido G?nther <agx@sigxcpu.org> | 2016-01-09 07:04:41 -0800 |
commit | 170c0a77997c73ef2c1e84b43df823fe925a5681 (patch) | |
tree | df8a804a561a71a3398130ee7482fa969b28d491 | |
parent | b8d35dfee0da3f3544d8b30ae5cebdcb8946a395 (diff) | |
download | nspr-hg-170c0a77997c73ef2c1e84b43df823fe925a5681.tar.gz |
Bug 1236244: server_test: reuse address to avoid test failures when
tests get run quickly after each other (as with e.g. runtests.sh).
r=wtc.
-rw-r--r-- | pr/tests/server_test.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/pr/tests/server_test.c b/pr/tests/server_test.c index 606d1b77..3df4e435 100644 --- a/pr/tests/server_test.c +++ b/pr/tests/server_test.c @@ -246,21 +246,32 @@ PRFileDesc * ServerSetup(void) { PRFileDesc *listenSocket; + PRSocketOptionData sockOpt; PRNetAddr serverAddr; PRThread *WorkerThread; - if ( (listenSocket = PR_NewTCPSocket()) == NULL) { + if ((listenSocket = PR_NewTCPSocket()) == NULL) { if (debug_mode) printf("\tServer error creating listen socket\n"); else Test_Result(FAIL); return NULL; } + sockOpt.option = PR_SockOpt_Reuseaddr; + sockOpt.value.reuse_addr = PR_TRUE; + if (PR_SetSocketOption(listenSocket, &sockOpt) != PR_SUCCESS) { + if (debug_mode) printf("\tServer error setting socket option: OS error %d\n", + PR_GetOSError()); + else Test_Result(FAIL); + PR_Close(listenSocket); + return NULL; + } + memset(&serverAddr, 0, sizeof(PRNetAddr)); serverAddr.inet.family = PR_AF_INET; serverAddr.inet.port = PR_htons(PORT); serverAddr.inet.ip = PR_htonl(PR_INADDR_ANY); - if ( PR_Bind(listenSocket, &serverAddr) == PR_FAILURE) { + if (PR_Bind(listenSocket, &serverAddr) != PR_SUCCESS) { if (debug_mode) printf("\tServer error binding to server address: OS error %d\n", PR_GetOSError()); else Test_Result(FAIL); @@ -268,7 +279,7 @@ ServerSetup(void) return NULL; } - if ( PR_Listen(listenSocket, 128) == PR_FAILURE) { + if (PR_Listen(listenSocket, 128) != PR_SUCCESS) { if (debug_mode) printf("\tServer error listening to server socket\n"); else Test_Result(FAIL); PR_Close(listenSocket); |