summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>2003-09-13 14:57:06 +0000
committerwtc%netscape.com <devnull@localhost>2003-09-13 14:57:06 +0000
commit897f6c4a67ef3d2b4fa6b0b017f197ed3461c8fe (patch)
treee81e6e97c1e994dda13166b6a0d88b8693e4654b
parentc99411c01fc5666c662d301539aeb03171198fde (diff)
downloadnspr-hg-897f6c4a67ef3d2b4fa6b0b017f197ed3461c8fe.tar.gz
Brought the NSPRPUB_PRE_4_2_CLIENT_BRANCH in synch with the tip.
-rwxr-xr-xadmin/repackage.sh8
-rwxr-xr-xconfigure2
-rw-r--r--configure.in2
-rw-r--r--pr/include/md/_solaris.h2
-rw-r--r--pr/include/private/primpl.h3
-rw-r--r--pr/src/md/unix/solaris.c35
-rw-r--r--pr/src/threads/combined/pruthr.c7
-rw-r--r--pr/tests/foreign.c39
-rw-r--r--pr/tests/provider.c57
-rw-r--r--pr/tests/server_test.c10
-rw-r--r--pr/tests/servr_kk.c10
-rw-r--r--pr/tests/servr_ku.c10
-rw-r--r--pr/tests/servr_uk.c10
-rw-r--r--pr/tests/servr_uu.c10
-rw-r--r--pr/tests/sockping.c3
-rw-r--r--pr/tests/vercheck.c12
16 files changed, 173 insertions, 47 deletions
diff --git a/admin/repackage.sh b/admin/repackage.sh
index 999aa0e0..d333c185 100755
--- a/admin/repackage.sh
+++ b/admin/repackage.sh
@@ -60,10 +60,10 @@
#
# These variables should be modified for each NSPR release.
#
-FROMTOP=/share/builds/components/nspr20/v4.3
-TOTOP=./v4.3
-NSPRDIR=nspr-4.3
-SOURCETAG=NSPR_4_3_RTM
+FROMTOP=/share/builds/components/nspr20/v4.4
+TOTOP=./v4.4
+NSPRDIR=nspr-4.4
+SOURCETAG=NSPR_4_4_RTM
#
# enumerate Unix object directories on /s/b/c
diff --git a/configure b/configure
index d503d959..f76d3b28 100755
--- a/configure
+++ b/configure
@@ -680,7 +680,7 @@ test "$host_alias" != "$target_alias" &&
MOD_MAJOR_VERSION=4
-MOD_MINOR_VERSION=3
+MOD_MINOR_VERSION=4
MOD_PATCH_VERSION=0
NSPR_MODNAME=nspr20
_HAVE_PTHREADS=
diff --git a/configure.in b/configure.in
index 0c5534e3..f5750d3d 100644
--- a/configure.in
+++ b/configure.in
@@ -43,7 +43,7 @@ dnl ========================================================
dnl = Defaults
dnl ========================================================
MOD_MAJOR_VERSION=4
-MOD_MINOR_VERSION=3
+MOD_MINOR_VERSION=4
MOD_PATCH_VERSION=0
NSPR_MODNAME=nspr20
_HAVE_PTHREADS=
diff --git a/pr/include/md/_solaris.h b/pr/include/md/_solaris.h
index 9c2ebffe..1d045035 100644
--- a/pr/include/md/_solaris.h
+++ b/pr/include/md/_solaris.h
@@ -233,6 +233,7 @@ extern struct PRLock *_pr_schedLock;
#define THREAD_KEY_T thread_key_t
+extern struct PRThread *_pr_attached_thread_tls();
extern struct PRThread *_pr_current_thread_tls();
extern struct _PRCPU *_pr_current_cpu_tls();
extern struct PRThread *_pr_last_thread_tls();
@@ -241,6 +242,7 @@ extern THREAD_KEY_T threadid_key;
extern THREAD_KEY_T cpuid_key;
extern THREAD_KEY_T last_thread_key;
+#define _MD_GET_ATTACHED_THREAD() _pr_attached_thread_tls()
#define _MD_CURRENT_THREAD() _pr_current_thread_tls()
#define _MD_CURRENT_CPU() _pr_current_cpu_tls()
#define _MD_LAST_THREAD() _pr_last_thread_tls()
diff --git a/pr/include/private/primpl.h b/pr/include/private/primpl.h
index b0cd1b5b..351781bf 100644
--- a/pr/include/private/primpl.h
+++ b/pr/include/private/primpl.h
@@ -304,7 +304,8 @@ typedef struct _PRInterruptTable {
#define _PR_CPU_PTR(_qp) \
((_PRCPU*) ((char*) (_qp) - offsetof(_PRCPU,links)))
-#if !defined(IRIX) && !defined(WIN32) && !defined(XP_OS2)
+#if !defined(IRIX) && !defined(WIN32) && !defined(XP_OS2) \
+ && !(defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY))
#define _MD_GET_ATTACHED_THREAD() (_PR_MD_CURRENT_THREAD())
#endif
diff --git a/pr/src/md/unix/solaris.c b/pr/src/md/unix/solaris.c
index 4dd1c06e..3313ac83 100644
--- a/pr/src/md/unix/solaris.c
+++ b/pr/src/md/unix/solaris.c
@@ -183,9 +183,25 @@ THREAD_KEY_T cpuid_key;
THREAD_KEY_T last_thread_key;
static sigset_t set, oldset;
+static void
+threadid_key_destructor(void *value)
+{
+ PRThread *me = (PRThread *)value;
+ PR_ASSERT((me != NULL) && (me->flags & _PR_ATTACHED));
+ /*
+ * The Solaris thread library sets the thread specific
+ * data (the current thread) to NULL before invoking
+ * the destructor. We need to restore it to prevent the
+ * _PR_MD_CURRENT_THREAD() call in _PRI_DetachThread()
+ * from attaching the thread again.
+ */
+ _PR_MD_SET_CURRENT_THREAD(me);
+ _PRI_DetachThread();
+}
+
void _MD_EarlyInit(void)
{
- THR_KEYCREATE(&threadid_key, NULL);
+ THR_KEYCREATE(&threadid_key, threadid_key_destructor);
THR_KEYCREATE(&cpuid_key, NULL);
THR_KEYCREATE(&last_thread_key, NULL);
sigemptyset(&set);
@@ -337,7 +353,7 @@ void _MD_lock(struct _MDLock *md_lock)
mutex_lock(&md_lock->lock);
}
-PRThread *_pr_current_thread_tls()
+PRThread *_pr_attached_thread_tls()
{
PRThread *ret;
@@ -345,6 +361,21 @@ PRThread *_pr_current_thread_tls()
return ret;
}
+PRThread *_pr_current_thread_tls()
+{
+ PRThread *thread;
+
+ thread = _MD_GET_ATTACHED_THREAD();
+
+ if (NULL == thread) {
+ thread = _PRI_AttachThread(
+ PR_USER_THREAD, PR_PRIORITY_NORMAL, NULL, 0);
+ }
+ PR_ASSERT(thread != NULL);
+
+ return thread;
+}
+
PRStatus
_MD_wait(PRThread *thread, PRIntervalTime ticks)
{
diff --git a/pr/src/threads/combined/pruthr.c b/pr/src/threads/combined/pruthr.c
index cbdfd2c0..a86fe5d0 100644
--- a/pr/src/threads/combined/pruthr.c
+++ b/pr/src/threads/combined/pruthr.c
@@ -1510,13 +1510,14 @@ PR_IMPLEMENT(PRThread*) PR_AttachThread(PRThreadType type,
PR_IMPLEMENT(void) PR_DetachThread(void)
{
/*
- * On IRIX and Windows, foreign threads are detached when
+ * On IRIX, Solaris, and Windows, foreign threads are detached when
* they terminate.
*/
-#if !defined(IRIX) && !defined(WIN32)
+#if !defined(IRIX) && !defined(WIN32) \
+ && !(defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY))
PRThread *me;
if (_pr_initialized) {
- me = _MD_GET_ATTACHED_THREAD();
+ me = _PR_MD_GET_ATTACHED_THREAD();
if ((me != NULL) && (me->flags & _PR_ATTACHED))
_PRI_DetachThread();
}
diff --git a/pr/tests/foreign.c b/pr/tests/foreign.c
index 2fe48b1b..5457cc8c 100644
--- a/pr/tests/foreign.c
+++ b/pr/tests/foreign.c
@@ -63,7 +63,7 @@
#include <stdlib.h>
static enum {
- thread_nspr, thread_pthread, thread_sproc, thread_win32
+ thread_nspr, thread_pthread, thread_uithread, thread_sproc, thread_win32
} thread_provider;
typedef void (*StartFn)(void*);
@@ -94,6 +94,18 @@ static void *pthread_start(void *arg)
} /* pthread_start */
#endif /* defined(_PR_PTHREADS) && !defined(_PR_DCETHREADS) */
+#if defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY)
+#include <thread.h>
+static void *uithread_start(void *arg)
+{
+ StartFn start = ((StartObject*)arg)->start;
+ void *data = ((StartObject*)arg)->arg;
+ PR_Free(arg);
+ start(data);
+ return NULL;
+} /* uithread_start */
+#endif /* defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY) */
+
#if defined(IRIX) && !defined(_PR_PTHREADS)
#include <sys/types.h>
#include <sys/prctl.h>
@@ -169,6 +181,29 @@ static PRStatus CreateThread(StartFn start, void *arg)
break;
#endif /* defined(_PR_PTHREADS) && !defined(_PR_DCETHREADS) */
+ case thread_uithread:
+#if defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY)
+ {
+ int rv;
+ thread_t id;
+ long flags;
+ StartObject *start_object;
+ start_object = PR_NEW(StartObject);
+ PR_ASSERT(NULL != start_object);
+ start_object->start = start;
+ start_object->arg = arg;
+
+ flags = THR_DETACHED;
+
+ rv = thr_create(NULL, NULL, uithread_start, start_object, flags, &id);
+ return (0 == rv) ? PR_SUCCESS : PR_FAILURE;
+ }
+#else
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ rv = PR_FAILURE;
+ break;
+#endif /* defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY) */
+
case thread_sproc:
#if defined(IRIX) && !defined(_PR_PTHREADS)
{
@@ -335,6 +370,8 @@ PRIntn main(PRIntn argc, char **argv)
thread_provider = thread_win32;
#elif defined(_PR_PTHREADS)
thread_provider = thread_pthread;
+#elif defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY)
+ thread_provider = thread_uithread;
#elif defined(IRIX)
thread_provider = thread_sproc;
#else
diff --git a/pr/tests/provider.c b/pr/tests/provider.c
index 5fd91bea..9fc68d13 100644
--- a/pr/tests/provider.c
+++ b/pr/tests/provider.c
@@ -127,7 +127,7 @@ typedef enum Verbosity
} Verbosity;
static enum {
- thread_nspr, thread_pthread, thread_sproc, thread_win32
+ thread_nspr, thread_pthread, thread_uithread, thread_sproc, thread_win32
} thread_provider;
static PRInt32 domain = AF_INET;
@@ -658,6 +658,20 @@ static void *pthread_start(void *arg)
} /* pthread_start */
#endif /* defined(_PR_PTHREADS) && !defined(_PR_DCETHREADS) */
+#if defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY)
+#include <thread.h>
+
+static void *uithread_start(void *arg)
+{
+ StartObject *so = (StartObject*)arg;
+ StartFn start = so->start;
+ void *data = so->arg;
+ PR_Free(so);
+ start(data);
+ return NULL;
+} /* uithread_start */
+#endif /* defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY) */
+
#if defined(IRIX) && !defined(_PR_PTHREADS)
#include <sys/types.h>
#include <sys/prctl.h>
@@ -698,6 +712,11 @@ static PRStatus JoinThread(PRThread *thread)
rv = PR_SUCCESS;
break;
#endif /* defined(_PR_PTHREADS) && !defined(_PR_DCETHREADS) */
+ case thread_uithread:
+#if defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY)
+ rv = PR_SUCCESS;
+ break;
+#endif /* defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY) */
case thread_win32:
#if defined(WIN32)
rv = PR_SUCCESS;
@@ -759,6 +778,29 @@ static PRStatus NewThread(
#endif /* defined(_PR_PTHREADS) && !defined(_PR_DCETHREADS) */
break;
+ case thread_uithread:
+#if defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY)
+ {
+ int rv;
+ thread_t id;
+ long flags;
+ StartObject *start_object;
+ start_object = PR_NEW(StartObject);
+ PR_ASSERT(NULL != start_object);
+ start_object->start = start;
+ start_object->arg = arg;
+
+ flags = THR_DETACHED;
+
+ rv = thr_create(NULL, NULL, uithread_start, start_object, flags, &id);
+ return (0 == rv) ? PR_SUCCESS : PR_FAILURE;
+ }
+#else
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ rv = PR_FAILURE;
+#endif /* defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY) */
+ break;
+
case thread_sproc:
#if defined(IRIX) && !defined(_PR_PTHREADS)
{
@@ -947,9 +989,15 @@ static void PR_CALLBACK Server(void *arg)
PRNetAddr serverAddress;
CSServer_t *server = (CSServer_t*)arg;
PRThread *me = server->thread = PR_CurrentThread();
+ PRSocketOptionData sockOpt;
server->listener = PR_Socket(domain, SOCK_STREAM, protocol);
+ sockOpt.option = PR_SockOpt_Reuseaddr;
+ sockOpt.value.reuse_addr = PR_TRUE;
+ rv = PR_SetSocketOption(server->listener, &sockOpt);
+ TEST_ASSERT(PR_SUCCESS == rv);
+
memset(&serverAddress, 0, sizeof(serverAddress));
rv = PR_InitializeNetAddr(PR_IpAddrAny, DEFAULT_PORT, &serverAddress);
@@ -1063,7 +1111,7 @@ static void Help(void)
PR_fprintf(debug_out, "\t-e <seconds> duration of the test in seconds (10)\n");
PR_fprintf(debug_out, "\t-s <string> dsn name of server (localhost)\n");
PR_fprintf(debug_out, "\t-G use GLOBAL threads (LOCAL)\n");
- PR_fprintf(debug_out, "\t-T <string> thread provider ('n' | 'p' | 'w')(n)\n");
+ PR_fprintf(debug_out, "\t-T <string> thread provider ('n' | 'p' | 'u' | 'w')(n)\n");
PR_fprintf(debug_out, "\t-X use XTP as transport (TCP)\n");
PR_fprintf(debug_out, "\t-6 Use IPv6 (IPv4)\n");
PR_fprintf(debug_out, "\t-v verbosity (accumulative) (0)\n");
@@ -1115,6 +1163,8 @@ PRIntn main(PRIntn argc, char** argv)
thread_provider = thread_win32;
#elif defined(_PR_PTHREADS)
thread_provider = thread_pthread;
+#elif defined(SOLARIS) && defined(_PR_GLOBAL_THREADS_ONLY)
+ thread_provider = thread_uithread;
#elif defined(IRIX)
thread_provider = thread_sproc;
#else
@@ -1146,6 +1196,7 @@ PRIntn main(PRIntn argc, char** argv)
case 'T': /* the thread provider */
if ('n' == *opt->value) thread_provider = thread_nspr;
else if ('p' == *opt->value) thread_provider = thread_pthread;
+ else if ('u' == *opt->value) thread_provider = thread_uithread;
else if ('w' == *opt->value) thread_provider = thread_win32;
else {Help(); return 2; }
break;
@@ -1374,6 +1425,8 @@ PRIntn main(PRIntn argc, char** argv)
thread_type = "\nWin32 Thread Statistics\n";
else if (thread_provider == thread_pthread)
thread_type = "\npthread Statistics\n";
+ else if (thread_provider == thread_uithread)
+ thread_type = "\nUnix International (UI) Thread Statistics\n";
else if (thread_provider == thread_sproc)
thread_type = "\nsproc Statistics\n";
else {
diff --git a/pr/tests/server_test.c b/pr/tests/server_test.c
index 46c474b3..572fea46 100644
--- a/pr/tests/server_test.c
+++ b/pr/tests/server_test.c
@@ -61,7 +61,7 @@
#include <string.h>
#define PORT 15004
-#define STACKSIZE 0
+#define THREAD_STACKSIZE 0
#define PASS 0
#define FAIL 1
@@ -225,7 +225,7 @@ WorkerThreadFunc(void *_listenSock)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread)
if (debug_mode) printf("Error creating client thread %d\n", workerThreads);
@@ -314,7 +314,7 @@ ServerSetup(void)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread) {
if (debug_mode) printf("error creating working thread\n");
@@ -469,7 +469,7 @@ RunClients(void)
PR_PRIORITY_NORMAL,
ClientScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!clientThread) {
if (debug_mode) printf("\terror creating client thread %d\n", index);
@@ -500,7 +500,7 @@ void do_work()
PR_PRIORITY_NORMAL,
ServerScope,
PR_JOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!ServerThread) {
if (debug_mode) printf("error creating main server thread\n");
return;
diff --git a/pr/tests/servr_kk.c b/pr/tests/servr_kk.c
index d9423343..1a477f9a 100644
--- a/pr/tests/servr_kk.c
+++ b/pr/tests/servr_kk.c
@@ -63,7 +63,7 @@
#include <string.h>
#define PORT 15004
-#define STACKSIZE 0
+#define THREAD_STACKSIZE 0
static int _iterations = 1000;
static int _clients = 1;
@@ -191,7 +191,7 @@ WorkerThreadFunc(void *_listenSock)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread)
if (debug_mode) printf("Error creating client thread %d\n", workerThreads);
@@ -291,7 +291,7 @@ ServerSetup(void)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread) {
if (debug_mode) printf("error creating working thread\n");
@@ -446,7 +446,7 @@ RunClients(void)
PR_PRIORITY_NORMAL,
ClientScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!clientThread) {
if (debug_mode) printf("\terror creating client thread %d\n", index);
@@ -477,7 +477,7 @@ void do_work()
PR_PRIORITY_NORMAL,
ServerScope,
PR_JOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!ServerThread) {
if (debug_mode) printf("error creating main server thread\n");
return;
diff --git a/pr/tests/servr_ku.c b/pr/tests/servr_ku.c
index d785e201..25808516 100644
--- a/pr/tests/servr_ku.c
+++ b/pr/tests/servr_ku.c
@@ -63,7 +63,7 @@
#include <string.h>
#define PORT 15004
-#define STACKSIZE 0
+#define THREAD_STACKSIZE 0
static int _iterations = 1000;
static int _clients = 1;
@@ -192,7 +192,7 @@ WorkerThreadFunc(void *_listenSock)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread)
if (debug_mode) printf("Error creating client thread %d\n", workerThreads);
@@ -292,7 +292,7 @@ ServerSetup(void)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread) {
if (debug_mode) printf("error creating working thread\n");
@@ -447,7 +447,7 @@ RunClients(void)
PR_PRIORITY_NORMAL,
ClientScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!clientThread) {
if (debug_mode) printf("\terror creating client thread %d\n", index);
@@ -478,7 +478,7 @@ void do_work()
PR_PRIORITY_NORMAL,
ServerScope,
PR_JOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!ServerThread) {
if (debug_mode) printf("error creating main server thread\n");
return;
diff --git a/pr/tests/servr_uk.c b/pr/tests/servr_uk.c
index 685c76a1..eb7d48fb 100644
--- a/pr/tests/servr_uk.c
+++ b/pr/tests/servr_uk.c
@@ -63,7 +63,7 @@
#include <string.h>
#define PORT 15004
-#define STACKSIZE 0
+#define THREAD_STACKSIZE 0
static int _iterations = 1000;
static int _clients = 1;
@@ -194,7 +194,7 @@ WorkerThreadFunc(void *_listenSock)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread)
if (debug_mode) printf("Error creating client thread %d\n", workerThreads);
@@ -294,7 +294,7 @@ ServerSetup(void)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread) {
if (debug_mode) printf("error creating working thread\n");
@@ -449,7 +449,7 @@ RunClients(void)
PR_PRIORITY_NORMAL,
ClientScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!clientThread) {
if (debug_mode) printf("\terror creating client thread %d\n", index);
@@ -480,7 +480,7 @@ void do_work()
PR_PRIORITY_NORMAL,
ServerScope,
PR_JOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!ServerThread) {
if (debug_mode) printf("error creating main server thread\n");
return;
diff --git a/pr/tests/servr_uu.c b/pr/tests/servr_uu.c
index 4722494b..1c6f2e8f 100644
--- a/pr/tests/servr_uu.c
+++ b/pr/tests/servr_uu.c
@@ -63,7 +63,7 @@
#include <string.h>
#define PORT 15004
-#define STACKSIZE 0
+#define THREAD_STACKSIZE 0
static int _iterations = 1000;
static int _clients = 1;
@@ -192,7 +192,7 @@ WorkerThreadFunc(void *_listenSock)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread)
if (debug_mode) printf("Error creating client thread %d\n", workerThreads);
@@ -292,7 +292,7 @@ ServerSetup(void)
PR_PRIORITY_NORMAL,
ServerScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!WorkerThread) {
if (debug_mode) printf("error creating working thread\n");
@@ -447,7 +447,7 @@ RunClients(void)
PR_PRIORITY_NORMAL,
ClientScope,
PR_UNJOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!clientThread) {
if (debug_mode) printf("\terror creating client thread %d\n", index);
@@ -478,7 +478,7 @@ void do_work()
PR_PRIORITY_NORMAL,
ServerScope,
PR_JOINABLE_THREAD,
- STACKSIZE);
+ THREAD_STACKSIZE);
if (!ServerThread) {
if (debug_mode) printf("error creating main server thread\n");
return;
diff --git a/pr/tests/sockping.c b/pr/tests/sockping.c
index fb377903..477851c2 100644
--- a/pr/tests/sockping.c
+++ b/pr/tests/sockping.c
@@ -124,7 +124,8 @@ int main()
memset(buf, 0, sizeof(buf));
nBytes = PR_Read(sock[0], buf, sizeof(buf));
if (nBytes == -1) {
- fprintf(stderr, "PR_Read failed\n");
+ fprintf(stderr, "PR_Read failed: (%d, %d)\n",
+ PR_GetError(), PR_GetOSError());
exit(1);
}
printf("ping process: received \"%s\"\n", buf);
diff --git a/pr/tests/vercheck.c b/pr/tests/vercheck.c
index 9cec4302..093ab673 100644
--- a/pr/tests/vercheck.c
+++ b/pr/tests/vercheck.c
@@ -49,13 +49,13 @@
#include <stdlib.h>
/*
- * This release (4.3) is backward compatible with the
- * 4.0.x, 4.1.x, and 4.2.x releases. It, of course, is compatible
- * with itself.
+ * This release (4.4) is backward compatible with the
+ * 4.0.x, 4.1.x, 4.2.x, and 4.3.x releases. It, of course,
+ * is compatible with itself.
*/
static char *compatible_version[] = {
"4.0", "4.0.1", "4.1", "4.1.1", "4.1.2", "4.1.3",
- "4.2", "4.2.1", "4.2.2", PR_VERSION
+ "4.2", "4.2.1", "4.2.2", "4.3", PR_VERSION
};
/*
@@ -70,8 +70,8 @@ static char *incompatible_version[] = {
"3.0", "3.0.1",
"3.1", "3.1.1", "3.1.2", "3.1.3",
"3.5", "3.5.1",
- "4.3.3",
- "4.4", "4.4.1",
+ "4.4.3",
+ "4.5", "4.5.1",
"10.0", "11.1", "12.14.20"
};