summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2017-12-09 23:50:05 +0100
committerDaniel Stenberg <daniel@haxx.se>2017-12-10 14:51:47 +0100
commite959f16c5fc17031e13e87732ef3848e1a7a2c2f (patch)
tree28a67664a78c979be17e7155c3f5cc316a1a594a
parent06a0a26fb6b4b45f20fdc484059d27b57df9b646 (diff)
downloadcurl-e959f16c5fc17031e13e87732ef3848e1a7a2c2f.tar.gz
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
-rw-r--r--lib/multi.c1
-rw-r--r--tests/data/test506100
2 files changed, 54 insertions, 47 deletions
diff --git a/lib/multi.c b/lib/multi.c
index 1a4618eb2..e35b8fa19 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -552,6 +552,7 @@ static CURLcode multi_done(struct connectdata **connp,
Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
conn->dns_entry = NULL;
}
+ Curl_hostcache_prune(data);
/* if the transfer was completed in a paused state there can be buffered
data left to free */
diff --git a/tests/data/test506 b/tests/data/test506
index 70d2daada..cd1a7dfc2 100644
--- a/tests/data/test506
+++ b/tests/data/test506
@@ -130,73 +130,79 @@ unlock: cookie [Pigs in space]: 29
run 1: set cookie 1, 2 and 3
lock: dns [Pigs in space]: 30
unlock: dns [Pigs in space]: 31
+lock: dns [Pigs in space]: 32
+unlock: dns [Pigs in space]: 33
CLEANUP
-lock: cookie [Pigs in space]: 32
-unlock: cookie [Pigs in space]: 33
-lock: share [Pigs in space]: 34
-unlock: share [Pigs in space]: 35
-*** run 2
-CURLOPT_SHARE
+lock: cookie [Pigs in space]: 34
+unlock: cookie [Pigs in space]: 35
lock: share [Pigs in space]: 36
unlock: share [Pigs in space]: 37
+*** run 2
+CURLOPT_SHARE
+lock: share [Pigs in space]: 38
+unlock: share [Pigs in space]: 39
PERFORM
-lock: dns [Pigs in space]: 38
-unlock: dns [Pigs in space]: 39
-lock: cookie [Pigs in space]: 40
-unlock: cookie [Pigs in space]: 41
+lock: dns [Pigs in space]: 40
+unlock: dns [Pigs in space]: 41
lock: cookie [Pigs in space]: 42
unlock: cookie [Pigs in space]: 43
lock: cookie [Pigs in space]: 44
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
-lock: dns [Pigs in space]: 46
-unlock: dns [Pigs in space]: 47
+lock: dns [Pigs in space]: 48
+unlock: dns [Pigs in space]: 49
+lock: dns [Pigs in space]: 50
+unlock: dns [Pigs in space]: 51
CLEANUP
-lock: cookie [Pigs in space]: 48
-unlock: cookie [Pigs in space]: 49
-lock: share [Pigs in space]: 50
-unlock: share [Pigs in space]: 51
+lock: cookie [Pigs in space]: 52
+unlock: cookie [Pigs in space]: 53
+lock: share [Pigs in space]: 54
+unlock: share [Pigs in space]: 55
*** run 3
CURLOPT_SHARE
-lock: share [Pigs in space]: 52
-unlock: share [Pigs in space]: 53
+lock: share [Pigs in space]: 56
+unlock: share [Pigs in space]: 57
CURLOPT_COOKIEJAR
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
unlock: cookie [Pigs in space]: 59
-lock: cookie [Pigs in space]: 60
-unlock: cookie [Pigs in space]: 61
+PERFORM
+lock: dns [Pigs in space]: 60
+unlock: dns [Pigs in space]: 61
lock: cookie [Pigs in space]: 62
unlock: cookie [Pigs in space]: 63
lock: cookie [Pigs in space]: 64
unlock: cookie [Pigs in space]: 65
lock: cookie [Pigs in space]: 66
unlock: cookie [Pigs in space]: 67
-run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch
-lock: dns [Pigs in space]: 68
-unlock: dns [Pigs in space]: 69
-CLEANUP
+lock: cookie [Pigs in space]: 68
+unlock: cookie [Pigs in space]: 69
lock: cookie [Pigs in space]: 70
unlock: cookie [Pigs in space]: 71
-lock: share [Pigs in space]: 72
-unlock: share [Pigs in space]: 73
-CURLOPT_SHARE
-lock: share [Pigs in space]: 74
-unlock: share [Pigs in space]: 75
-CURLOPT_COOKIELIST ALL
+run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch
+lock: dns [Pigs in space]: 72
+unlock: dns [Pigs in space]: 73
+lock: dns [Pigs in space]: 74
+unlock: dns [Pigs in space]: 75
+CLEANUP
lock: cookie [Pigs in space]: 76
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_COOKIELIST RELOAD
-lock: cookie [Pigs in space]: 78
-unlock: cookie [Pigs in space]: 79
-lock: cookie [Pigs in space]: 80
-unlock: cookie [Pigs in space]: 81
+lock: cookie [Pigs in space]: 84
+unlock: cookie [Pigs in space]: 85
+lock: cookie [Pigs in space]: 86
+unlock: cookie [Pigs in space]: 87
loaded cookies:
-----------------
.host.foo.com TRUE / FALSE 1896263787 injected yes
@@ -209,17 +215,17 @@ loaded cookies:
www.host.foo.com FALSE / FALSE 1993463787 test6 six_more
-----------------
try SHARE_CLEANUP...
-lock: share [Pigs in space]: 82
-unlock: share [Pigs in space]: 83
+lock: share [Pigs in space]: 88
+unlock: share [Pigs in space]: 89
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
+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]: 88
-unlock: share [Pigs in space]: 89
+lock: share [Pigs in space]: 94
+unlock: share [Pigs in space]: 95
GLOBAL_CLEANUP
</stdout>
<stderr>