diff options
author | wtc%netscape.com <devnull@localhost> | 2003-09-13 14:57:06 +0000 |
---|---|---|
committer | wtc%netscape.com <devnull@localhost> | 2003-09-13 14:57:06 +0000 |
commit | 897f6c4a67ef3d2b4fa6b0b017f197ed3461c8fe (patch) | |
tree | e81e6e97c1e994dda13166b6a0d88b8693e4654b | |
parent | c99411c01fc5666c662d301539aeb03171198fde (diff) | |
download | nspr-hg-897f6c4a67ef3d2b4fa6b0b017f197ed3461c8fe.tar.gz |
Brought the NSPRPUB_PRE_4_2_CLIENT_BRANCH in synch with the tip.
-rwxr-xr-x | admin/repackage.sh | 8 | ||||
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | pr/include/md/_solaris.h | 2 | ||||
-rw-r--r-- | pr/include/private/primpl.h | 3 | ||||
-rw-r--r-- | pr/src/md/unix/solaris.c | 35 | ||||
-rw-r--r-- | pr/src/threads/combined/pruthr.c | 7 | ||||
-rw-r--r-- | pr/tests/foreign.c | 39 | ||||
-rw-r--r-- | pr/tests/provider.c | 57 | ||||
-rw-r--r-- | pr/tests/server_test.c | 10 | ||||
-rw-r--r-- | pr/tests/servr_kk.c | 10 | ||||
-rw-r--r-- | pr/tests/servr_ku.c | 10 | ||||
-rw-r--r-- | pr/tests/servr_uk.c | 10 | ||||
-rw-r--r-- | pr/tests/servr_uu.c | 10 | ||||
-rw-r--r-- | pr/tests/sockping.c | 3 | ||||
-rw-r--r-- | pr/tests/vercheck.c | 12 |
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 @@ -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" }; |