1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 07:38:49 -05:00

multi_done: prune DNS cache

Prune the DNS cache immediately after the dns entry is unlocked in
multi_done. Timed out entries will then get discarded in a more orderly
fashion.

Test506 is updated

Reported-by: Oleg Pudeyev

Fixes #2169
Closes #2170
This commit is contained in:
Daniel Stenberg 2017-12-09 23:50:05 +01:00
parent 06a0a26fb6
commit e959f16c5f
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
2 changed files with 55 additions and 48 deletions

View File

@ -552,6 +552,7 @@ static CURLcode multi_done(struct connectdata **connp,
Curl_resolv_unlock(data, conn->dns_entry); /* done with this */ Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
conn->dns_entry = NULL; conn->dns_entry = NULL;
} }
Curl_hostcache_prune(data);
/* if the transfer was completed in a paused state there can be buffered /* if the transfer was completed in a paused state there can be buffered
data left to free */ data left to free */

View File

@ -130,73 +130,79 @@ unlock: cookie [Pigs in space]: 29
run 1: set cookie 1, 2 and 3 run 1: set cookie 1, 2 and 3
lock: dns [Pigs in space]: 30 lock: dns [Pigs in space]: 30
unlock: dns [Pigs in space]: 31 unlock: dns [Pigs in space]: 31
lock: dns [Pigs in space]: 32
unlock: dns [Pigs in space]: 33
CLEANUP CLEANUP
lock: cookie [Pigs in space]: 32 lock: cookie [Pigs in space]: 34
unlock: cookie [Pigs in space]: 33 unlock: cookie [Pigs in space]: 35
lock: share [Pigs in space]: 34
unlock: share [Pigs in space]: 35
*** run 2
CURLOPT_SHARE
lock: share [Pigs in space]: 36 lock: share [Pigs in space]: 36
unlock: share [Pigs in space]: 37 unlock: share [Pigs in space]: 37
*** run 2
CURLOPT_SHARE
lock: share [Pigs in space]: 38
unlock: share [Pigs in space]: 39
PERFORM PERFORM
lock: dns [Pigs in space]: 38 lock: dns [Pigs in space]: 40
unlock: dns [Pigs in space]: 39 unlock: dns [Pigs in space]: 41
lock: cookie [Pigs in space]: 40
unlock: cookie [Pigs in space]: 41
lock: cookie [Pigs in space]: 42 lock: cookie [Pigs in space]: 42
unlock: cookie [Pigs in space]: 43 unlock: cookie [Pigs in space]: 43
lock: cookie [Pigs in space]: 44 lock: cookie [Pigs in space]: 44
unlock: cookie [Pigs in space]: 45 unlock: cookie [Pigs in space]: 45
lock: cookie [Pigs in space]: 46
unlock: cookie [Pigs in space]: 47
run 2: set cookie 4 and 5 run 2: set cookie 4 and 5
lock: dns [Pigs in space]: 46 lock: dns [Pigs in space]: 48
unlock: dns [Pigs in space]: 47 unlock: dns [Pigs in space]: 49
lock: dns [Pigs in space]: 50
unlock: dns [Pigs in space]: 51
CLEANUP CLEANUP
lock: cookie [Pigs in space]: 48 lock: cookie [Pigs in space]: 52
unlock: cookie [Pigs in space]: 49 unlock: cookie [Pigs in space]: 53
lock: share [Pigs in space]: 50 lock: share [Pigs in space]: 54
unlock: share [Pigs in space]: 51 unlock: share [Pigs in space]: 55
*** run 3 *** run 3
CURLOPT_SHARE CURLOPT_SHARE
lock: share [Pigs in space]: 52 lock: share [Pigs in space]: 56
unlock: share [Pigs in space]: 53 unlock: share [Pigs in space]: 57
CURLOPT_COOKIEJAR CURLOPT_COOKIEJAR
CURLOPT_COOKIELIST FLUSH CURLOPT_COOKIELIST FLUSH
lock: cookie [Pigs in space]: 54
unlock: cookie [Pigs in space]: 55
PERFORM
lock: dns [Pigs in space]: 56
unlock: dns [Pigs in space]: 57
lock: cookie [Pigs in space]: 58 lock: cookie [Pigs in space]: 58
unlock: cookie [Pigs in space]: 59 unlock: cookie [Pigs in space]: 59
lock: cookie [Pigs in space]: 60 PERFORM
unlock: cookie [Pigs in space]: 61 lock: dns [Pigs in space]: 60
unlock: dns [Pigs in space]: 61
lock: cookie [Pigs in space]: 62 lock: cookie [Pigs in space]: 62
unlock: cookie [Pigs in space]: 63 unlock: cookie [Pigs in space]: 63
lock: cookie [Pigs in space]: 64 lock: cookie [Pigs in space]: 64
unlock: cookie [Pigs in space]: 65 unlock: cookie [Pigs in space]: 65
lock: cookie [Pigs in space]: 66 lock: cookie [Pigs in space]: 66
unlock: cookie [Pigs in space]: 67 unlock: cookie [Pigs in space]: 67
run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch lock: cookie [Pigs in space]: 68
lock: dns [Pigs in space]: 68 unlock: cookie [Pigs in space]: 69
unlock: dns [Pigs in space]: 69
CLEANUP
lock: cookie [Pigs in space]: 70 lock: cookie [Pigs in space]: 70
unlock: cookie [Pigs in space]: 71 unlock: cookie [Pigs in space]: 71
lock: share [Pigs in space]: 72 run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch
unlock: share [Pigs in space]: 73 lock: dns [Pigs in space]: 72
CURLOPT_SHARE unlock: dns [Pigs in space]: 73
lock: share [Pigs in space]: 74 lock: dns [Pigs in space]: 74
unlock: share [Pigs in space]: 75 unlock: dns [Pigs in space]: 75
CURLOPT_COOKIELIST ALL CLEANUP
lock: cookie [Pigs in space]: 76 lock: cookie [Pigs in space]: 76
unlock: cookie [Pigs in space]: 77 unlock: cookie [Pigs in space]: 77
lock: share [Pigs in space]: 78
unlock: share [Pigs in space]: 79
CURLOPT_SHARE
lock: share [Pigs in space]: 80
unlock: share [Pigs in space]: 81
CURLOPT_COOKIELIST ALL
lock: cookie [Pigs in space]: 82
unlock: cookie [Pigs in space]: 83
CURLOPT_COOKIEJAR CURLOPT_COOKIEJAR
CURLOPT_COOKIELIST RELOAD CURLOPT_COOKIELIST RELOAD
lock: cookie [Pigs in space]: 78 lock: cookie [Pigs in space]: 84
unlock: cookie [Pigs in space]: 79 unlock: cookie [Pigs in space]: 85
lock: cookie [Pigs in space]: 80 lock: cookie [Pigs in space]: 86
unlock: cookie [Pigs in space]: 81 unlock: cookie [Pigs in space]: 87
loaded cookies: loaded cookies:
----------------- -----------------
.host.foo.com TRUE / FALSE 1896263787 injected yes .host.foo.com TRUE / FALSE 1896263787 injected yes
@ -209,17 +215,17 @@ loaded cookies:
www.host.foo.com FALSE / FALSE 1993463787 test6 six_more www.host.foo.com FALSE / FALSE 1993463787 test6 six_more
----------------- -----------------
try SHARE_CLEANUP... try SHARE_CLEANUP...
lock: share [Pigs in space]: 82
unlock: share [Pigs in space]: 83
SHARE_CLEANUP failed, correct
CLEANUP
lock: cookie [Pigs in space]: 84
unlock: cookie [Pigs in space]: 85
lock: share [Pigs in space]: 86
unlock: share [Pigs in space]: 87
SHARE_CLEANUP
lock: share [Pigs in space]: 88 lock: share [Pigs in space]: 88
unlock: share [Pigs in space]: 89 unlock: share [Pigs in space]: 89
SHARE_CLEANUP failed, correct
CLEANUP
lock: cookie [Pigs in space]: 90
unlock: cookie [Pigs in space]: 91
lock: share [Pigs in space]: 92
unlock: share [Pigs in space]: 93
SHARE_CLEANUP
lock: share [Pigs in space]: 94
unlock: share [Pigs in space]: 95
GLOBAL_CLEANUP GLOBAL_CLEANUP
</stdout> </stdout>
<stderr> <stderr>