mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 14:57:32 +09:00
Issue #1338 - Part 1: Update NSPR to 4.24
This commit is contained in:
parent
f6096004d7
commit
1a92143e68
454 changed files with 42944 additions and 48647 deletions
|
|
@ -11,10 +11,10 @@
|
|||
**
|
||||
** Modification History:
|
||||
** 19-May-97 AGarcia- Converted the test to accomodate the debug_mode flag.
|
||||
** The debug mode will print all of the printfs associated with this test.
|
||||
** The regress mode will be the default mode. Since the regress tool limits
|
||||
** The debug mode will print all of the printfs associated with this test.
|
||||
** The regress mode will be the default mode. Since the regress tool limits
|
||||
** the output to a one line status:PASS or FAIL,all of the printf statements
|
||||
** have been handled with an if (debug_mode) statement.
|
||||
** have been handled with an if (debug_mode) statement.
|
||||
***********************************************************************/
|
||||
|
||||
/***********************************************************************
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
#include <string.h>
|
||||
|
||||
/* for getcwd */
|
||||
#if defined(XP_UNIX) || defined (XP_OS2) || defined(XP_BEOS)
|
||||
#if defined(XP_UNIX) || defined (XP_OS2)
|
||||
#include <unistd.h>
|
||||
#elif defined(XP_PC)
|
||||
#include <direct.h>
|
||||
|
|
@ -87,7 +87,9 @@ static PRIntervalTime Timeout(const Shared *shared)
|
|||
|
||||
static void CauseTimeout(const Shared *shared)
|
||||
{
|
||||
if (shared->intermittant) PR_Sleep(Timeout(shared));
|
||||
if (shared->intermittant) {
|
||||
PR_Sleep(Timeout(shared));
|
||||
}
|
||||
} /* CauseTimeout */
|
||||
|
||||
static PRStatus MakeReceiver(Shared *shared)
|
||||
|
|
@ -110,24 +112,30 @@ static PRStatus MakeReceiver(Shared *shared)
|
|||
argv[1] = "-d";
|
||||
argv[2] = NULL;
|
||||
}
|
||||
else argv[1] = NULL;
|
||||
if (shared->debug > 1)
|
||||
else {
|
||||
argv[1] = NULL;
|
||||
}
|
||||
if (shared->debug > 1) {
|
||||
PR_fprintf(debug_out, " creating accept process %s ...", path);
|
||||
}
|
||||
fflush(stdout);
|
||||
rv = PR_CreateProcessDetached(path, argv, NULL, NULL);
|
||||
if (PR_SUCCESS == rv)
|
||||
{
|
||||
if (shared->debug > 1)
|
||||
if (shared->debug > 1) {
|
||||
PR_fprintf(debug_out, " wait 5 seconds");
|
||||
if (shared->debug > 1)
|
||||
}
|
||||
if (shared->debug > 1) {
|
||||
PR_fprintf(debug_out, " before connecting to accept process ...");
|
||||
}
|
||||
fflush(stdout);
|
||||
PR_Sleep(PR_SecondsToInterval(5));
|
||||
return rv;
|
||||
}
|
||||
shared->failed = PR_TRUE;
|
||||
if (shared->debug > 0)
|
||||
if (shared->debug > 0) {
|
||||
PL_FPrintError(debug_out, "PR_CreateProcessDetached failed");
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
} /* MakeReceiver */
|
||||
|
|
@ -139,28 +147,35 @@ static void Connect(void *arg)
|
|||
PRFileDesc *clientSock;
|
||||
Shared *shared = (Shared*)arg;
|
||||
PRInt32 loop, bytes, flags = 0;
|
||||
struct Descriptor { PRInt32 length; PRUint32 checksum; } descriptor;
|
||||
struct Descriptor {
|
||||
PRInt32 length;
|
||||
PRUint32 checksum;
|
||||
} descriptor;
|
||||
debug_out = (0 == shared->debug) ? NULL : PR_GetSpecialFD(PR_StandardError);
|
||||
|
||||
buffer = (char*)PR_MALLOC(shared->message_length);
|
||||
|
||||
for (bytes = 0; bytes < shared->message_length; ++bytes)
|
||||
for (bytes = 0; bytes < shared->message_length; ++bytes) {
|
||||
buffer[bytes] = (char)bytes;
|
||||
}
|
||||
|
||||
descriptor.checksum = 0;
|
||||
for (bytes = 0; bytes < shared->message_length; ++bytes)
|
||||
{
|
||||
PRUint32 overflow = descriptor.checksum & 0x80000000;
|
||||
descriptor.checksum = (descriptor.checksum << 1);
|
||||
if (0x00000000 != overflow) descriptor.checksum += 1;
|
||||
if (0x00000000 != overflow) {
|
||||
descriptor.checksum += 1;
|
||||
}
|
||||
descriptor.checksum += buffer[bytes];
|
||||
}
|
||||
descriptor.checksum = PR_htonl(descriptor.checksum);
|
||||
|
||||
for (loop = 0; loop < shared->messages; ++loop)
|
||||
{
|
||||
if (shared->debug > 1)
|
||||
if (shared->debug > 1) {
|
||||
PR_fprintf(debug_out, "[%d]socket ... ", loop);
|
||||
}
|
||||
clientSock = PR_NewTCPSocket();
|
||||
if (clientSock)
|
||||
{
|
||||
|
|
@ -179,58 +194,72 @@ static void Connect(void *arg)
|
|||
PR_fprintf(debug_out, "connecting to %s ... ", buf);
|
||||
}
|
||||
rv = PR_Connect(
|
||||
clientSock, &shared->serverAddress, Timeout(shared));
|
||||
clientSock, &shared->serverAddress, Timeout(shared));
|
||||
if (PR_SUCCESS == rv)
|
||||
{
|
||||
PRInt32 descriptor_length = (loop < (shared->messages - 1)) ?
|
||||
shared->message_length : 0;
|
||||
shared->message_length : 0;
|
||||
descriptor.length = PR_htonl(descriptor_length);
|
||||
if (shared->debug > 1)
|
||||
PR_fprintf(
|
||||
debug_out, "sending %d bytes ... ", descriptor_length);
|
||||
CauseTimeout(shared); /* might cause server to timeout */
|
||||
bytes = PR_Send(
|
||||
clientSock, &descriptor, sizeof(descriptor),
|
||||
flags, Timeout(shared));
|
||||
clientSock, &descriptor, sizeof(descriptor),
|
||||
flags, Timeout(shared));
|
||||
if (bytes != sizeof(descriptor))
|
||||
{
|
||||
shared->failed = PR_TRUE;
|
||||
if (shared->debug > 0)
|
||||
if (shared->debug > 0) {
|
||||
PL_FPrintError(debug_out, "PR_Send failed");
|
||||
}
|
||||
}
|
||||
if (0 != descriptor_length)
|
||||
{
|
||||
CauseTimeout(shared);
|
||||
bytes = PR_Send(
|
||||
clientSock, buffer, descriptor_length,
|
||||
flags, Timeout(shared));
|
||||
clientSock, buffer, descriptor_length,
|
||||
flags, Timeout(shared));
|
||||
if (bytes != descriptor_length)
|
||||
{
|
||||
shared->failed = PR_TRUE;
|
||||
if (shared->debug > 0)
|
||||
if (shared->debug > 0) {
|
||||
PL_FPrintError(debug_out, "PR_Send failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shared->debug > 1) PR_fprintf(debug_out, "closing ... ");
|
||||
if (shared->debug > 1) {
|
||||
PR_fprintf(debug_out, "closing ... ");
|
||||
}
|
||||
rv = PR_Shutdown(clientSock, PR_SHUTDOWN_BOTH);
|
||||
rv = PR_Close(clientSock);
|
||||
if (shared->debug > 1)
|
||||
{
|
||||
if (PR_SUCCESS == rv) PR_fprintf(debug_out, "\n");
|
||||
else PL_FPrintError(debug_out, "shutdown failed");
|
||||
if (PR_SUCCESS == rv) {
|
||||
PR_fprintf(debug_out, "\n");
|
||||
}
|
||||
else {
|
||||
PL_FPrintError(debug_out, "shutdown failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (shared->debug > 1) PL_FPrintError(debug_out, "connect failed");
|
||||
if (shared->debug > 1) {
|
||||
PL_FPrintError(debug_out, "connect failed");
|
||||
}
|
||||
PR_Close(clientSock);
|
||||
if ((loop == 0) && (PR_GetError() == PR_CONNECT_REFUSED_ERROR))
|
||||
{
|
||||
if (MakeReceiver(shared) == PR_FAILURE) break;
|
||||
if (MakeReceiver(shared) == PR_FAILURE) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (shared->debug > 1) PR_fprintf(debug_out, " exiting\n");
|
||||
if (shared->debug > 1) {
|
||||
PR_fprintf(debug_out, " exiting\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -238,7 +267,9 @@ static void Connect(void *arg)
|
|||
else
|
||||
{
|
||||
shared->failed = PR_TRUE;
|
||||
if (shared->debug > 0) PL_FPrintError(debug_out, "create socket");
|
||||
if (shared->debug > 0) {
|
||||
PL_FPrintError(debug_out, "create socket");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -285,28 +316,34 @@ int Tmocon(int argc, char **argv)
|
|||
memset(&shared->serverAddress, 0, sizeof(shared->serverAddress));
|
||||
rv = PR_InitializeNetAddr(PR_IpAddrLoopback, BASE_PORT, &shared->serverAddress);
|
||||
PR_ASSERT(PR_SUCCESS == rv);
|
||||
|
||||
|
||||
while (PL_OPT_EOL != (os = PL_GetNextOpt(opt)))
|
||||
{
|
||||
if (PL_OPT_BAD == os) continue;
|
||||
if (PL_OPT_BAD == os) {
|
||||
continue;
|
||||
}
|
||||
switch (opt->option)
|
||||
{
|
||||
case 'd':
|
||||
if (0 == shared->debug) shared->debug = 1;
|
||||
break;
|
||||
case 'v':
|
||||
if (0 == shared->debug) shared->debug = 2;
|
||||
break;
|
||||
case 'i':
|
||||
shared->intermittant = PR_TRUE;
|
||||
break;
|
||||
case 'R':
|
||||
shared->random = PR_TRUE;
|
||||
break;
|
||||
case 'G':
|
||||
thread_scope = PR_GLOBAL_THREAD;
|
||||
break;
|
||||
case 'h': /* the value for backlock */
|
||||
case 'd':
|
||||
if (0 == shared->debug) {
|
||||
shared->debug = 1;
|
||||
}
|
||||
break;
|
||||
case 'v':
|
||||
if (0 == shared->debug) {
|
||||
shared->debug = 2;
|
||||
}
|
||||
break;
|
||||
case 'i':
|
||||
shared->intermittant = PR_TRUE;
|
||||
break;
|
||||
case 'R':
|
||||
shared->random = PR_TRUE;
|
||||
break;
|
||||
case 'G':
|
||||
thread_scope = PR_GLOBAL_THREAD;
|
||||
break;
|
||||
case 'h': /* the value for backlock */
|
||||
{
|
||||
PRIntn es = 0;
|
||||
PRHostEnt host;
|
||||
|
|
@ -314,35 +351,43 @@ int Tmocon(int argc, char **argv)
|
|||
(void)PR_GetHostByName(
|
||||
opt->value, buffer, sizeof(buffer), &host);
|
||||
es = PR_EnumerateHostEnt(
|
||||
es, &host, BASE_PORT, &shared->serverAddress);
|
||||
es, &host, BASE_PORT, &shared->serverAddress);
|
||||
PR_ASSERT(es > 0);
|
||||
}
|
||||
break;
|
||||
case 'm': /* number of messages to send */
|
||||
shared->messages = atoi(opt->value);
|
||||
break;
|
||||
case 't': /* number of threads sending */
|
||||
threads = atoi(opt->value);
|
||||
break;
|
||||
case 'D': /* dally time between transmissions */
|
||||
dally = atoi(opt->value);
|
||||
break;
|
||||
case 'T': /* timeout on I/O operations */
|
||||
timeout = atoi(opt->value);
|
||||
break;
|
||||
case 's': /* total size of each message */
|
||||
shared->message_length = atoi(opt->value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case 'm': /* number of messages to send */
|
||||
shared->messages = atoi(opt->value);
|
||||
break;
|
||||
case 't': /* number of threads sending */
|
||||
threads = atoi(opt->value);
|
||||
break;
|
||||
case 'D': /* dally time between transmissions */
|
||||
dally = atoi(opt->value);
|
||||
break;
|
||||
case 'T': /* timeout on I/O operations */
|
||||
timeout = atoi(opt->value);
|
||||
break;
|
||||
case 's': /* total size of each message */
|
||||
shared->message_length = atoi(opt->value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
PL_DestroyOptState(opt);
|
||||
PL_DestroyOptState(opt);
|
||||
|
||||
if (0 == timeout) timeout = DEFAULT_TIMEOUT;
|
||||
if (0 == threads) threads = DEFAULT_THREADS;
|
||||
if (0 == shared->messages) shared->messages = DEFAULT_MESSAGES;
|
||||
if (0 == shared->message_length) shared->message_length = DEFAULT_MESSAGESIZE;
|
||||
if (0 == timeout) {
|
||||
timeout = DEFAULT_TIMEOUT;
|
||||
}
|
||||
if (0 == threads) {
|
||||
threads = DEFAULT_THREADS;
|
||||
}
|
||||
if (0 == shared->messages) {
|
||||
shared->messages = DEFAULT_MESSAGES;
|
||||
}
|
||||
if (0 == shared->message_length) {
|
||||
shared->message_length = DEFAULT_MESSAGESIZE;
|
||||
}
|
||||
|
||||
shared->dally = PR_SecondsToInterval(dally);
|
||||
shared->timeout = PR_SecondsToInterval(timeout);
|
||||
|
|
@ -351,11 +396,12 @@ int Tmocon(int argc, char **argv)
|
|||
|
||||
for (index = 0; index < threads; ++index)
|
||||
thread[index] = PR_CreateThread(
|
||||
PR_USER_THREAD, Connect, shared,
|
||||
PR_PRIORITY_NORMAL, thread_scope,
|
||||
PR_JOINABLE_THREAD, 0);
|
||||
for (index = 0; index < threads; ++index)
|
||||
PR_USER_THREAD, Connect, shared,
|
||||
PR_PRIORITY_NORMAL, thread_scope,
|
||||
PR_JOINABLE_THREAD, 0);
|
||||
for (index = 0; index < threads; ++index) {
|
||||
rv = PR_JoinThread(thread[index]);
|
||||
}
|
||||
|
||||
PR_DELETE(thread);
|
||||
|
||||
|
|
@ -370,7 +416,7 @@ int Tmocon(int argc, char **argv)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
return (PR_VersionCheck(PR_VERSION)) ?
|
||||
PR_Initialize(Tmocon, argc, argv, 4) : -1;
|
||||
PR_Initialize(Tmocon, argc, argv, 4) : -1;
|
||||
} /* main */
|
||||
|
||||
/* tmocon.c */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue