altsvc: keep a copy of the file name to survive handle reset

The alt-svc cache survives a call to curl_easy_reset fine, but the file
name to use for saving the cache was cleared. Now the alt-svc cache has
a copy of the file name to survive handle resets.

Added test 1908 to verify.

Reported-by: Craig Andrews
Fixes #4898
Closes #4902
This commit is contained in:
Daniel Stenberg 2020-02-09 15:28:03 +01:00
parent f8f4a94465
commit 02f8de6516
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
6 changed files with 143 additions and 4 deletions

View file

@ -192,6 +192,7 @@ test1700 test1701 test1702 \
test1800 test1801 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 \
test1908 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \

71
tests/data/test1908 Normal file
View file

@ -0,0 +1,71 @@
<testcase>
<info>
<keywords>
CURLINFO_EFFECTIVE_URL
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Content-Length: 0
alt-svc: h2="3dbbdetxoyw4nsp6c3cc456oj2ays6s43ezxzsfxxri3h5xqd.example:443"; ma=315360000; persist=1
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
# require debug so that alt-svc can work over plain old HTTP
<features>
alt-svc
debug
</features>
<name>
alt-svc cache save after resetting the handle
</name>
<setenv>
# make debug-curl accept Alt-Svc over plain HTTP
CURL_ALTSVC_HTTP="yeah"
</setenv>
<tool>
lib1908
</tool>
<command>
%HOSTIP:%HTTPPORT/1908
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1908 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stripfile>
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-1908">
# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h1 127.0.0.1 8990 h2 3dbbdetxoyw4nsp6c3cc456oj2ays6s43ezxzsfxxri3h5xqd.example 443 TIMESTAMP 1 0
</file>
</verify>
</testcase>