aboutsummaryrefslogtreecommitdiff
path: root/src/testcurl
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-08-15 17:30:44 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-08-15 21:37:50 +0300
commit8a210d2885a5cf8c072806cc64d9b46f1d9c8e05 (patch)
tree4c012894ed883355e83b82d7ed3e94e5827849e0 /src/testcurl
parente4092f1d54c3ceb9d1954afed5f8d2fce600f183 (diff)
downloadlibmicrohttpd-8a210d2885a5cf8c072806cc64d9b46f1d9c8e05.tar.gz
libmicrohttpd-8a210d2885a5cf8c072806cc64d9b46f1d9c8e05.zip
test_digestauth2: reuse the same connection for the second request
Diffstat (limited to 'src/testcurl')
-rw-r--r--src/testcurl/test_digestauth2.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/testcurl/test_digestauth2.c b/src/testcurl/test_digestauth2.c
index fa418f69..ade4d2a5 100644
--- a/src/testcurl/test_digestauth2.c
+++ b/src/testcurl/test_digestauth2.c
@@ -1129,7 +1129,7 @@ setupCURL (void *cbc, unsigned int port)
1129 1129
1130 1130
1131static CURLcode 1131static CURLcode
1132performQueryExternal (struct MHD_Daemon *d, CURL *c) 1132performQueryExternal (struct MHD_Daemon *d, CURL *c, CURLM **multi_reuse)
1133{ 1133{
1134 CURLM *multi; 1134 CURLM *multi;
1135 time_t start; 1135 time_t start;
@@ -1137,10 +1137,15 @@ performQueryExternal (struct MHD_Daemon *d, CURL *c)
1137 CURLcode ret; 1137 CURLcode ret;
1138 1138
1139 ret = CURLE_FAILED_INIT; /* will be replaced with real result */ 1139 ret = CURLE_FAILED_INIT; /* will be replaced with real result */
1140 multi = NULL; 1140 if (NULL != *multi_reuse)
1141 multi = curl_multi_init (); 1141 multi = *multi_reuse;
1142 if (multi == NULL) 1142 else
1143 libcurlErrorExitDesc ("curl_multi_init() failed"); 1143 {
1144 multi = curl_multi_init ();
1145 if (multi == NULL)
1146 libcurlErrorExitDesc ("curl_multi_init() failed");
1147 *multi_reuse = multi;
1148 }
1144 if (CURLM_OK != curl_multi_add_handle (multi, c)) 1149 if (CURLM_OK != curl_multi_add_handle (multi, c))
1145 libcurlErrorExitDesc ("curl_multi_add_handle() failed"); 1150 libcurlErrorExitDesc ("curl_multi_add_handle() failed");
1146 1151
@@ -1185,7 +1190,6 @@ performQueryExternal (struct MHD_Daemon *d, CURL *c)
1185 externalErrorExit (); 1190 externalErrorExit ();
1186 } 1191 }
1187 curl_multi_remove_handle (multi, c); 1192 curl_multi_remove_handle (multi, c);
1188 curl_multi_cleanup (multi);
1189 multi = NULL; 1193 multi = NULL;
1190 } 1194 }
1191 else 1195 else
@@ -1291,6 +1295,7 @@ testDigestAuth (void)
1291 struct req_track rq_tr; 1295 struct req_track rq_tr;
1292 char buf[2048]; 1296 char buf[2048];
1293 CURL *c; 1297 CURL *c;
1298 CURLM *multi_reuse;
1294 int failed = 0; 1299 int failed = 0;
1295 1300
1296 if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT)) 1301 if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
@@ -1348,8 +1353,9 @@ testDigestAuth (void)
1348 cbc.pos = 0; 1353 cbc.pos = 0;
1349 memset (cbc.buf, 0, cbc.size); 1354 memset (cbc.buf, 0, cbc.size);
1350 c = setupCURL (&cbc, (unsigned int) port); 1355 c = setupCURL (&cbc, (unsigned int) port);
1356 multi_reuse = NULL;
1351 /* First request */ 1357 /* First request */
1352 if (check_result (performQueryExternal (d, c), c, &cbc)) 1358 if (check_result (performQueryExternal (d, c, &multi_reuse), c, &cbc))
1353 { 1359 {
1354 if (verbose) 1360 if (verbose)
1355 printf ("Got expected response.\n"); 1361 printf ("Got expected response.\n");
@@ -1363,7 +1369,7 @@ testDigestAuth (void)
1363 rq_tr.req_num = 0; 1369 rq_tr.req_num = 0;
1364 /* Second request */ 1370 /* Second request */
1365 setCURL_rq_path (c, port, ++rq_tr.uri_num); 1371 setCURL_rq_path (c, port, ++rq_tr.uri_num);
1366 if (check_result (performQueryExternal (d, c), c, &cbc)) 1372 if (check_result (performQueryExternal (d, c, &multi_reuse), c, &cbc))
1367 { 1373 {
1368 if (verbose) 1374 if (verbose)
1369 printf ("Got expected response.\n"); 1375 printf ("Got expected response.\n");
@@ -1374,6 +1380,8 @@ testDigestAuth (void)
1374 failed = 1; 1380 failed = 1;
1375 } 1381 }
1376 curl_easy_cleanup (c); 1382 curl_easy_cleanup (c);
1383 if (NULL != multi_reuse)
1384 curl_multi_cleanup (multi_reuse);
1377 1385
1378 MHD_stop_daemon (d); 1386 MHD_stop_daemon (d);
1379 return failed ? 1 : 0; 1387 return failed ? 1 : 0;