diff options
author | Seonah Moon <seonah1.moon@samsung.com> | 2020-02-24 15:56:49 +0900 |
---|---|---|
committer | Seonah Moon <seonah1.moon@samsung.com> | 2020-02-24 15:57:31 +0900 |
commit | 1127a2d91941b474b346c96a1499f3493a3f0f40 (patch) | |
tree | e6734b853d299aa98a3653cebf0233a712c07009 /lib/altsvc.h | |
parent | bc9ddd35af69662a667d983e2484f557f76cf230 (diff) | |
download | curl-1127a2d91941b474b346c96a1499f3493a3f0f40.tar.gz curl-1127a2d91941b474b346c96a1499f3493a3f0f40.tar.bz2 curl-1127a2d91941b474b346c96a1499f3493a3f0f40.zip |
Imported Upstream version 7.68.0upstream/7.68.0
Change-Id: I37422e43c2c4c25904a4fc2a391c4a32ba3b9f5c
Diffstat (limited to 'lib/altsvc.h')
-rw-r--r-- | lib/altsvc.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/altsvc.h b/lib/altsvc.h new file mode 100644 index 000000000..99d0499af --- /dev/null +++ b/lib/altsvc.h @@ -0,0 +1,78 @@ +#ifndef HEADER_CURL_ALTSVC_H +#define HEADER_CURL_ALTSVC_H +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 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 + * are also available at https://curl.haxx.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ***************************************************************************/ +#include "curl_setup.h" + +#if !defined(CURL_DISABLE_HTTP) && defined(USE_ALTSVC) +#include <curl/curl.h> +#include "llist.h" + +enum alpnid { + ALPN_none = 0, + ALPN_h1 = CURLALTSVC_H1, + ALPN_h2 = CURLALTSVC_H2, + ALPN_h3 = CURLALTSVC_H3 +}; + +struct althost { + char *host; + unsigned short port; + enum alpnid alpnid; +}; + +struct altsvc { + struct althost src; + struct althost dst; + time_t expires; + bool persist; + int prio; + struct curl_llist_element node; +}; + +struct altsvcinfo { + char *filename; + struct curl_llist list; /* list of entries */ + size_t num; /* number of alt-svc entries */ + long flags; /* the publicly set bitmask */ +}; + +const char *Curl_alpnid2str(enum alpnid id); +struct altsvcinfo *Curl_altsvc_init(void); +CURLcode Curl_altsvc_load(struct altsvcinfo *asi, const char *file); +CURLcode Curl_altsvc_save(struct altsvcinfo *asi, const char *file); +CURLcode Curl_altsvc_ctrl(struct altsvcinfo *asi, const long ctrl); +void Curl_altsvc_cleanup(struct altsvcinfo *altsvc); +CURLcode Curl_altsvc_parse(struct Curl_easy *data, + struct altsvcinfo *altsvc, const char *value, + enum alpnid srcalpn, const char *srchost, + unsigned short srcport); +bool Curl_altsvc_lookup(struct altsvcinfo *asi, + enum alpnid srcalpnid, const char *srchost, + int srcport, + struct altsvc **dstentry, + int versions); /* one or more CURLALTSVC_H* bits */ +#else +/* disabled */ +#define Curl_altsvc_save(a,b) +#endif /* CURL_DISABLE_HTTP || USE_ALTSVC */ +#endif /* HEADER_CURL_ALTSVC_H */ |