curl_multi_remove_handle() don't block terminating c-ares requests

Added Curl_resolver_kill() for all three resolver modes, which only
blocks when necessary, along with test 1592 to confirm
curl_multi_remove_handle() doesn't block unless it must.

Closes #3428
Fixes #3371
This commit is contained in:
Brad Spencer 2018-12-14 17:18:22 -04:00 committed by Daniel Stenberg
parent ebe658c1e5
commit 84a30d0a41
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
8 changed files with 225 additions and 21 deletions

View file

@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@ -179,8 +179,8 @@ test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
\
test1560 test1561 \
\
test1590 \
test1591 \
test1590 test1591 test1592 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 \
\

37
tests/data/test1592 Normal file
View file

@ -0,0 +1,37 @@
<testcase>
<info>
<keywords>
HTTP
multi
resolve
speedcheck
</keywords>
</info>
# Client-side
<client>
<server>
none
</server>
<tool>
lib1592
</tool>
<name>
HTTP request, remove handle while resolving, don't block
</name>
<command>
http://a-site-never-accessed.example.org/1592
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<valgrind>
disable
</valgrind>
<errorcode>
0
</errorcode>
</verify>
</testcase>