aboutsummaryrefslogtreecommitdiff
path: root/tests/libtest/lib509.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/libtest/lib509.c')
-rw-r--r--tests/libtest/lib509.c41
1 files changed, 32 insertions, 9 deletions
diff --git a/tests/libtest/lib509.c b/tests/libtest/lib509.c
index 5d385c966..77d5e1c6b 100644
--- a/tests/libtest/lib509.c
+++ b/tests/libtest/lib509.c
@@ -18,6 +18,11 @@
#include <openssl/bio.h>
#include <openssl/ssl.h>
+#include "timeval.h"
+
+#define MAIN_LOOP_HANG_TIMEOUT 45 * 1000
+#define MULTI_PERFORM_HANG_TIMEOUT 30 * 1000
+
int portnum; /* the HTTPS port number we use */
typedef struct sslctxparm_st {
@@ -175,8 +180,10 @@ int test(char *URL)
int i = 0;
CURLMsg *msg;
- int loop1 = 40;
- int loop2 = 20;
+ struct timeval ml_start;
+ struct timeval mp_start;
+ char ml_timedout = FALSE;
+ char mp_timedout = FALSE;
if(arg2) {
portnum = atoi(arg2);
@@ -208,24 +215,39 @@ int test(char *URL)
res = curl_multi_add_handle(multi, p.curl);
- while ((--loop1>0) && (loop2>0) && (!done)) {
+ ml_timedout = FALSE;
+ ml_start = curlx_tvnow();
+
+ while (!done) {
fd_set rd, wr, exc;
int max_fd;
struct timeval interval;
interval.tv_sec = 1;
interval.tv_usec = 0;
- loop2 = 20;
- while ((--loop2>0) && (res == CURLM_CALL_MULTI_PERFORM)) {
+ if (curlx_tvdiff(curlx_tvnow(), ml_start) >
+ MAIN_LOOP_HANG_TIMEOUT) {
+ ml_timedout = TRUE;
+ break;
+ }
+ mp_timedout = FALSE;
+ mp_start = curlx_tvnow();
+
+ while (res == CURLM_CALL_MULTI_PERFORM) {
res = curl_multi_perform(multi, &running);
+ if (curlx_tvdiff(curlx_tvnow(), mp_start) >
+ MULTI_PERFORM_HANG_TIMEOUT) {
+ mp_timedout = TRUE;
+ break;
+ }
fprintf(stderr, "running=%d res=%d\n",running,res);
if (running <= 0) {
done = TRUE;
break;
}
}
- if ((loop2 <= 0) || (done))
+ if (mp_timedout || done)
break;
if (res != CURLM_OK) {
@@ -254,8 +276,9 @@ int test(char *URL)
res = CURLM_CALL_MULTI_PERFORM;
}
- if ((loop1 <= 0) || (loop2 <= 0)) {
- fprintf(stderr, "loop1: %d loop2: %d \n", loop1, loop2);
+ if (ml_timedout || mp_timedout) {
+ if (ml_timedout) fprintf(stderr, "ml_timedout\n");
+ if (mp_timedout) fprintf(stderr, "mp_timedout\n");
fprintf(stderr, "ABORTING TEST, since it seems "
"that it would have run forever.\n");
i = 77;
@@ -268,7 +291,7 @@ int test(char *URL)
}
}
- if ((loop1>0) && (loop2>0)) {
+ if ((!ml_timedout) && (!mp_timedout)) {
fprintf(stderr, "all done\n");
}