rbb 99/05/26 08:45:59
Modified: apr/test client.c testsock.c apr/threadproc/unix proc.c include apr_errno.h Log: Changes required to get testsock up and working again. Revision Changes Path 1.7 +7 -2 apache-apr/apr/test/client.c Index: client.c =================================================================== RCS file: /home/cvs/apache-apr/apr/test/client.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- client.c 1999/05/25 17:03:53 1.6 +++ client.c 1999/05/26 15:45:56 1.7 @@ -70,6 +70,7 @@ ap_socket_t *sock; ap_int32_t rv; ap_ssize_t length; + ap_status_t stat; struct timeval timeout; char datasend[STRLEN] = "Send data test"; char datarecv[STRLEN]; @@ -105,9 +106,13 @@ fprintf(stdout, "OK\n"); fprintf(stdout, "\tClient: Connecting to socket......."); - if (ap_connect(sock, "localhost") != APR_SUCCESS) { +do { + stat = ap_connect(sock, "localhost"); +} while (stat == APR_ECONNREFUSED); + if (stat != APR_SUCCESS) { ap_close_socket(sock); - fprintf(stderr, "Could not connect\n"); + fprintf(stderr, "Could not connect %d\n", stat); + fflush(stderr); exit(-1); } fprintf(stdout, "OK\n"); 1.11 +16 -9 apache-apr/apr/test/testsock.c Index: testsock.c =================================================================== RCS file: /home/cvs/apache-apr/apr/test/testsock.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- testsock.c 1999/05/26 13:46:58 1.10 +++ testsock.c 1999/05/26 15:45:56 1.11 @@ -58,6 +58,7 @@ #include "apr_thread_proc.h" #include "apr_errno.h" #include "apr_general.h" +#include "apr_lib.h" #define STRLEN 15 @@ -65,12 +66,13 @@ { ap_context_t *context; - ap_procattr_t *attr1; - ap_procattr_t *attr2; - ap_proc_t *proc1; - ap_proc_t *proc2; + ap_procattr_t *attr1 = NULL; + ap_procattr_t *attr2 = NULL; + ap_proc_t *proc1 = NULL; + ap_proc_t *proc2 = NULL; ap_status_t s1; ap_status_t s2; + char *args[2]; fprintf(stdout, "Creating context......."); if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { @@ -92,18 +94,23 @@ fprintf(stderr, "Problem creating proc attrs\n"); exit(-1); } - - s1 = ap_create_process(context, "server", NULL, NULL, attr1, &proc1); - s2 = ap_create_process(context, "client", NULL, NULL, attr2, &proc2); + + args[0] = ap_pstrdup(context->pool, "server"); + args[1] = NULL; + s1 = ap_create_process(context, "./server", args, NULL, attr1, &proc1); + args[0] = ap_pstrdup(context->pool, "client"); + s2 = ap_create_process(context, "./client", args, NULL, attr2, &proc2); + if (s1 != APR_SUCCESS || s2 != APR_SUCCESS) { fprintf(stderr, "Problem spawning new process\n"); exit(-1); } - while ((s1 = ap_wait_proc(proc1, APR_NOWAIT)) != APR_SUCCESS && - (s2 = ap_wait_proc(proc2, APR_NOWAIT)) != APR_SUCCESS) + while ((s1 = ap_wait_proc(proc1, APR_NOWAIT)) != APR_CHILD_DONE || + (s2 = ap_wait_proc(proc2, APR_NOWAIT)) != APR_CHILD_DONE) { continue; + } if (s1 == APR_SUCCESS) { ap_kill(proc2, SIGTERM); 1.15 +15 -5 apache-apr/apr/threadproc/unix/proc.c Index: proc.c =================================================================== RCS file: /home/cvs/apache-apr/apr/threadproc/unix/proc.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- proc.c 1999/05/26 13:47:01 1.14 +++ proc.c 1999/05/26 15:45:57 1.15 @@ -63,6 +63,7 @@ #include <signal.h> #include <string.h> #include <sys/wait.h> +#include <unistd.h> ap_status_t ap_createprocattr_init(ap_context_t *cont, struct procattr_t **new) { @@ -246,15 +247,24 @@ ap_status_t ap_wait_proc(struct proc_t *proc, ap_wait_how_e wait) { + pid_t stat; if (!proc) return APR_ENOPROC; if (wait == APR_WAIT) { - if (waitpid(proc->pid, NULL, WUNTRACED) > 0) - return APR_SUCCESS; + if ((stat = waitpid(proc->pid, NULL, WUNTRACED)) > 0) { + return APR_CHILD_DONE; + } + else if (stat == 0) { + return APR_CHILD_NOTDONE; + } return errno; } - if (waitpid(proc->pid, NULL, WUNTRACED | WNOHANG) > 0) - return APR_SUCCESS; - return errno; + if ((stat = waitpid(proc->pid, NULL, WUNTRACED | WNOHANG)) > 0) { + return APR_CHILD_DONE; + } + else if (stat == 0) { + return APR_CHILD_NOTDONE; + } + return errno; } 1.15 +2 -0 apache-apr/include/apr_errno.h Index: apr_errno.h =================================================================== RCS file: /home/cvs/apache-apr/include/apr_errno.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- apr_errno.h 1999/05/25 17:04:09 1.14 +++ apr_errno.h 1999/05/26 15:45:58 1.15 @@ -396,6 +396,8 @@ #define APR_INPARENT 5002 #define APR_DETACH 5003 #define APR_NOTDETACH 5004 +#define APR_CHILD_DONE 5005 +#define APR_CHILD_NOTDONE 5006 #ifdef __cplusplus