summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido G?nther <agx@sigxcpu.org>2016-01-09 07:04:41 -0800
committerGuido G?nther <agx@sigxcpu.org>2016-01-09 07:04:41 -0800
commit170c0a77997c73ef2c1e84b43df823fe925a5681 (patch)
treedf8a804a561a71a3398130ee7482fa969b28d491
parentb8d35dfee0da3f3544d8b30ae5cebdcb8946a395 (diff)
downloadnspr-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.c17
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);