mirror of
https://github.com/curl/curl.git
synced 2026-08-25 16:43:39 +03:00
hsts: CURLSTS_FAIL from hsts read callback should fail transfer
... and have CURLE_ABORTED_BY_CALLBACK returned. Extended test 1915 to verify. Reported-by: Jonathan Cardoso Fixes #7726 Closes #7729
This commit is contained in:
parent
5b7aaefc07
commit
da2598f823
6 changed files with 34 additions and 6 deletions
|
|
@ -36,15 +36,18 @@ http://%HOSTIP:%NOLISTENPORT/not-there/%TESTNUMBER
|
|||
|
||||
# Verify data after the test has been "shot"
|
||||
<verify>
|
||||
# it fails because there's nothing on that port
|
||||
# 7 CURLE_COULDNT_CONNECT (expected since there's nothing listening there)
|
||||
# 42 CURLE_ABORTED_BY_CALLBACK
|
||||
<errorcode>
|
||||
7
|
||||
42
|
||||
</errorcode>
|
||||
<stdout>
|
||||
[0/4] 1.example.com 20370320 01:02:03
|
||||
[1/4] 2.example.com 20370320 03:02:01
|
||||
[2/4] 3.example.com 20370319 01:02:03
|
||||
[3/4] 4.example.com unlimited
|
||||
First request returned 7
|
||||
Second request returned 42
|
||||
</stdout>
|
||||
</verify>
|
||||
</testcase>
|
||||
|
|
|
|||
|
|
@ -65,6 +65,16 @@ static CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *e,
|
|||
return CURLSTS_OK;
|
||||
}
|
||||
|
||||
/* verify error from callback */
|
||||
static CURLSTScode hstsreadfail(CURL *easy, struct curl_hstsentry *e,
|
||||
void *userp)
|
||||
{
|
||||
(void)easy;
|
||||
(void)e;
|
||||
(void)userp;
|
||||
return CURLSTS_FAIL;
|
||||
}
|
||||
|
||||
/* check that we get the hosts back in the save */
|
||||
static CURLSTScode hstswrite(CURL *easy, struct curl_hstsentry *e,
|
||||
struct curl_index *i, void *userp)
|
||||
|
|
@ -97,6 +107,19 @@ int test(char *URL)
|
|||
curl_easy_setopt(hnd, CURLOPT_HSTS_CTRL, CURLHSTS_ENABLE);
|
||||
ret = curl_easy_perform(hnd);
|
||||
curl_easy_cleanup(hnd);
|
||||
printf("First request returned %d\n", (int)ret);
|
||||
}
|
||||
hnd = curl_easy_init();
|
||||
if(hnd) {
|
||||
curl_easy_setopt(hnd, CURLOPT_URL, URL);
|
||||
curl_easy_setopt(hnd, CURLOPT_HSTSREADFUNCTION, hstsreadfail);
|
||||
curl_easy_setopt(hnd, CURLOPT_HSTSREADDATA, &st);
|
||||
curl_easy_setopt(hnd, CURLOPT_HSTSWRITEFUNCTION, hstswrite);
|
||||
curl_easy_setopt(hnd, CURLOPT_HSTSWRITEDATA, &st);
|
||||
curl_easy_setopt(hnd, CURLOPT_HSTS_CTRL, CURLHSTS_ENABLE);
|
||||
ret = curl_easy_perform(hnd);
|
||||
curl_easy_cleanup(hnd);
|
||||
printf("Second request returned %d\n", (int)ret);
|
||||
}
|
||||
curl_global_cleanup();
|
||||
return (int)ret;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue