1# Alt-Svc 2 3curl features **EXPERIMENTAL** support for the Alt-Svc: HTTP header. 4 5## Experimental 6 7Experimental support in curl means: 8 91. Experimental features are provided to allow users to try them out and 10 provide feedback on functionality and API etc before they ship and get 11 "carved in stone". 122. You must enable the feature when invoking configure as otherwise curl will 13 not be built with the feature present. 143. We strongly advice against using this feature in production. 154. **We reserve the right to change behavior** of the feature without sticking 16 to our API/ABI rules as we do for regular features, as long as it is marked 17 experimental. 185. Experimental features are clearly marked so in documentation. Beware. 19 20## Enable Alt-Svc in build 21 22`./configure --enable-alt-svc` 23 24## Standard 25 26[RFC 7838](https://tools.ietf.org/html/rfc7838) 27 28## What works 29 30- read alt-svc file from disk 31- write alt-svc file from disk 32- parse `Alt-Svc:` response headers, including `ma`, `clear` and `persist`. 33- replaces old entries when new alternatives are received 34- unit tests to verify most of this functionality (test 1654) 35- act on `Alt-Svc:` response headers 36- build conditionally on `configure --enable-alt-svc` only, feature marked as 37 **EXPERIMENTAL** 38- implement `CURLOPT_ALTSVC_CTRL` 39- implement `CURLOPT_ALTSVC` 40- document `CURLOPT_ALTSVC_CTRL` 41- document `CURLOPT_ALTSVC` 42- document `--alt-svc` 43- add `CURL_VERSION_ALTSVC` 44- make `curl -V` show 'alt-svc' as a feature if built-in 45- support `curl --alt-svc [file]` to enable caching, using that file 46- make `tests/runtests.pl` able to filter tests on the feature `alt-svc` 47- actually use the existing in-memory alt-svc cache for outgoing connections 48- alt-svc cache expiry 49- test 355 and 356 verify curl acting on Alt-Svc, received from header and 50 loaded from cache. The latter needs a debug build since it enables Alt-Svc 51 for plain HTTP. 52 53## What is left 54 55- handle multiple response headers, when one of them says `clear` (should 56 override them all) 57- using `Age:` value for caching age as per spec 58- `CURLALTSVC_IMMEDIATELY` support 59- `CURLALTSVC_ALTUSED` support 60