commit 8a210d2885a5cf8c072806cc64d9b46f1d9c8e05
parent e4092f1d54c3ceb9d1954afed5f8d2fce600f183
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Mon, 15 Aug 2022 17:30:44 +0300
test_digestauth2: reuse the same connection for the second request
Diffstat:
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/testcurl/test_digestauth2.c b/src/testcurl/test_digestauth2.c
@@ -1129,7 +1129,7 @@ setupCURL (void *cbc, unsigned int port)
static CURLcode
-performQueryExternal (struct MHD_Daemon *d, CURL *c)
+performQueryExternal (struct MHD_Daemon *d, CURL *c, CURLM **multi_reuse)
{
CURLM *multi;
time_t start;
@@ -1137,10 +1137,15 @@ performQueryExternal (struct MHD_Daemon *d, CURL *c)
CURLcode ret;
ret = CURLE_FAILED_INIT; /* will be replaced with real result */
- multi = NULL;
- multi = curl_multi_init ();
- if (multi == NULL)
- libcurlErrorExitDesc ("curl_multi_init() failed");
+ if (NULL != *multi_reuse)
+ multi = *multi_reuse;
+ else
+ {
+ multi = curl_multi_init ();
+ if (multi == NULL)
+ libcurlErrorExitDesc ("curl_multi_init() failed");
+ *multi_reuse = multi;
+ }
if (CURLM_OK != curl_multi_add_handle (multi, c))
libcurlErrorExitDesc ("curl_multi_add_handle() failed");
@@ -1185,7 +1190,6 @@ performQueryExternal (struct MHD_Daemon *d, CURL *c)
externalErrorExit ();
}
curl_multi_remove_handle (multi, c);
- curl_multi_cleanup (multi);
multi = NULL;
}
else
@@ -1291,6 +1295,7 @@ testDigestAuth (void)
struct req_track rq_tr;
char buf[2048];
CURL *c;
+ CURLM *multi_reuse;
int failed = 0;
if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
@@ -1348,8 +1353,9 @@ testDigestAuth (void)
cbc.pos = 0;
memset (cbc.buf, 0, cbc.size);
c = setupCURL (&cbc, (unsigned int) port);
+ multi_reuse = NULL;
/* First request */
- if (check_result (performQueryExternal (d, c), c, &cbc))
+ if (check_result (performQueryExternal (d, c, &multi_reuse), c, &cbc))
{
if (verbose)
printf ("Got expected response.\n");
@@ -1363,7 +1369,7 @@ testDigestAuth (void)
rq_tr.req_num = 0;
/* Second request */
setCURL_rq_path (c, port, ++rq_tr.uri_num);
- if (check_result (performQueryExternal (d, c), c, &cbc))
+ if (check_result (performQueryExternal (d, c, &multi_reuse), c, &cbc))
{
if (verbose)
printf ("Got expected response.\n");
@@ -1374,6 +1380,8 @@ testDigestAuth (void)
failed = 1;
}
curl_easy_cleanup (c);
+ if (NULL != multi_reuse)
+ curl_multi_cleanup (multi_reuse);
MHD_stop_daemon (d);
return failed ? 1 : 0;