summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>1999-12-22 20:10:49 +0000
committerwtc%netscape.com <devnull@localhost>1999-12-22 20:10:49 +0000
commitc21bd17c829e576e78b5622e29755100eb0ece27 (patch)
tree8444243bcde67f2680ef9c7424208cf0b9bed759
parentfddbdfd163ba8d9eb0e0c70c7d8982c30921701e (diff)
downloadnspr-hg-c21bd17c829e576e78b5622e29755100eb0ece27.tar.gz
Bugzilla bug #21651: call PR_Listen on the listening socket before passing
it to the server thread.
-rw-r--r--pr/tests/layer.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/pr/tests/layer.c b/pr/tests/layer.c
index 92bba62a..70962c83 100644
--- a/pr/tests/layer.c
+++ b/pr/tests/layer.c
@@ -117,13 +117,7 @@ static void PR_CALLBACK Server(void *arg)
PRUintn empty_flags = 0;
PRIntn bytes_read, bytes_sent;
PRFileDesc *stack = (PRFileDesc*)arg;
- PRNetAddr any_address, client_address;
-
- rv = PR_InitializeNetAddr(PR_IpAddrAny, default_port, &any_address);
- PR_ASSERT(PR_SUCCESS == rv);
-
- rv = PR_Bind(stack, &any_address); PR_ASSERT(PR_SUCCESS == rv);
- rv = PR_Listen(stack, 10); PR_ASSERT(PR_SUCCESS == rv);
+ PRNetAddr client_address;
service = PR_Accept(stack, &client_address, PR_INTERVAL_NO_TIMEOUT);
if (verbosity > quiet)
@@ -237,6 +231,7 @@ PRIntn main(PRIntn argc, char **argv)
PRIntn mits;
PLOptStatus os;
PRFileDesc *client, *service;
+ PRNetAddr any_address;
const char *server_name = NULL;
const PRIOMethods *stubMethods;
PRThread *client_thread, *server_thread;
@@ -312,6 +307,10 @@ PRIntn main(PRIntn argc, char **argv)
PR_fprintf(logFile, "Beginning non-layered test\n");
client = PR_NewTCPSocket(); PR_ASSERT(NULL != client);
service = PR_NewTCPSocket(); PR_ASSERT(NULL != service);
+ rv = PR_InitializeNetAddr(PR_IpAddrAny, default_port, &any_address);
+ PR_ASSERT(PR_SUCCESS == rv);
+ rv = PR_Bind(service, &any_address); PR_ASSERT(PR_SUCCESS == rv);
+ rv = PR_Listen(service, 10); PR_ASSERT(PR_SUCCESS == rv);
minor_iterations = mits;
server_thread = PR_CreateThread(
@@ -340,17 +339,23 @@ PRIntn main(PRIntn argc, char **argv)
if (verbosity > silent)
PR_fprintf(logFile, "Beginning layered test\n");
client = PR_NewTCPSocket(); PR_ASSERT(NULL != client);
+ PushLayer(client);
service = PR_NewTCPSocket(); PR_ASSERT(NULL != service);
+ PushLayer(service);
+ rv = PR_InitializeNetAddr(PR_IpAddrAny, default_port, &any_address);
+ PR_ASSERT(PR_SUCCESS == rv);
+ rv = PR_Bind(service, &any_address); PR_ASSERT(PR_SUCCESS == rv);
+ rv = PR_Listen(service, 10); PR_ASSERT(PR_SUCCESS == rv);
minor_iterations = mits;
server_thread = PR_CreateThread(
- PR_USER_THREAD, Server, PushLayer(service),
+ PR_USER_THREAD, Server, service,
PR_PRIORITY_HIGH, thread_scope,
PR_JOINABLE_THREAD, 16 * 1024);
PR_ASSERT(NULL != server_thread);
client_thread = PR_CreateThread(
- PR_USER_THREAD, Client, PushLayer(client),
+ PR_USER_THREAD, Client, client,
PR_PRIORITY_NORMAL, thread_scope,
PR_JOINABLE_THREAD, 16 * 1024);
PR_ASSERT(NULL != client_thread);