aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/libtest/lib540.c2
-rw-r--r--tests/libtest/test.h23
2 files changed, 17 insertions, 8 deletions
diff --git a/tests/libtest/lib540.c b/tests/libtest/lib540.c
index 21d14872b..a47f1dee6 100644
--- a/tests/libtest/lib540.c
+++ b/tests/libtest/lib540.c
@@ -136,6 +136,8 @@ static int loop(int num, CURLM *cm, const char* url, const char* userpwd,
if(res)
return res;
+ /* At this point, L is guaranteed to be greater or equal than -1. */
+
if(L != -1) {
T.tv_sec = L/1000;
T.tv_usec = (L%1000)*1000;
diff --git a/tests/libtest/test.h b/tests/libtest/test.h
index 81c435d1f..34b8c9f3e 100644
--- a/tests/libtest/test.h
+++ b/tests/libtest/test.h
@@ -95,6 +95,7 @@ extern int unitfail;
#define TEST_ERR_USAGE 118
#define TEST_ERR_FOPEN 117
#define TEST_ERR_FSTAT 116
+#define TEST_ERR_BAD_TIMEOUT 115
/*
** Macros for test source code readability/maintainability.
@@ -301,14 +302,20 @@ extern int unitfail;
/* ---------------------------------------------------------------- */
-#define exe_multi_timeout(A,B,Y,Z) do { \
- CURLMcode ec; \
- if((ec = curl_multi_timeout((A),(B))) != CURLM_OK) { \
- fprintf(stderr, "%s:%d curl_multi_timeout() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_multi_strerror(ec)); \
- res = (int)ec; \
- } \
+#define exe_multi_timeout(A,B,Y,Z) do { \
+ CURLMcode ec; \
+ if((ec = curl_multi_timeout((A),(B))) != CURLM_OK) { \
+ fprintf(stderr, "%s:%d curl_multi_timeout() failed, " \
+ "with code %d (%s)\n", \
+ (Y), (Z), (int)ec, curl_multi_strerror(ec)); \
+ res = (int)ec; \
+ } \
+ else if(*((B)) < -1L) { \
+ fprintf(stderr, "%s:%d curl_multi_timeout() succeeded, " \
+ "but returned invalid timeout value (%ld)\n", \
+ (Y), (Z), (long)*((B))); \
+ res = TEST_ERR_BAD_TIMEOUT; \
+ } \
} WHILE_FALSE
#define res_multi_timeout(A,B) \