diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2022-08-15 17:30:44 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2022-08-15 21:37:50 +0300 |
commit | 8a210d2885a5cf8c072806cc64d9b46f1d9c8e05 (patch) | |
tree | 4c012894ed883355e83b82d7ed3e94e5827849e0 | |
parent | e4092f1d54c3ceb9d1954afed5f8d2fce600f183 (diff) | |
download | libmicrohttpd-8a210d2885a5cf8c072806cc64d9b46f1d9c8e05.tar.gz libmicrohttpd-8a210d2885a5cf8c072806cc64d9b46f1d9c8e05.zip |
test_digestauth2: reuse the same connection for the second request
-rw-r--r-- | src/testcurl/test_digestauth2.c | 24 |
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 | ||
1131 | static CURLcode | 1131 | static CURLcode |
1132 | performQueryExternal (struct MHD_Daemon *d, CURL *c) | 1132 | performQueryExternal (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; |