mirror of
https://github.com/curl/curl.git
synced 2026-08-25 16:33:38 +03:00
urldata: remove fields not used depending on used features
Reduced size of dynamically_allocated_data structure. Reduced number of stored values in enum dupstring and enum dupblob. This affects the reduced array placed in the UserDefined structure. Closes #13188
This commit is contained in:
parent
11d27cf341
commit
f46385d36d
14 changed files with 157 additions and 44 deletions
120
lib/urldata.h
120
lib/urldata.h
|
|
@ -1327,22 +1327,28 @@ struct UrlState {
|
|||
/* Dynamically allocated strings, MUST be freed before this struct is
|
||||
killed. */
|
||||
struct dynamically_allocated_data {
|
||||
char *proxyuserpwd;
|
||||
char *uagent;
|
||||
char *accept_encoding;
|
||||
char *userpwd;
|
||||
char *rangeline;
|
||||
char *ref;
|
||||
char *host;
|
||||
#ifndef CURL_DISABLE_COOKIES
|
||||
char *cookiehost;
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_RTSP
|
||||
char *rtsp_transport;
|
||||
#endif
|
||||
char *te; /* TE: request header */
|
||||
|
||||
/* transfer credentials */
|
||||
char *user;
|
||||
char *passwd;
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
char *proxyuserpwd;
|
||||
char *proxyuser;
|
||||
char *proxypasswd;
|
||||
#endif
|
||||
} aptr;
|
||||
|
||||
unsigned char httpwant; /* when non-zero, a specific HTTP version requested
|
||||
|
|
@ -1407,95 +1413,125 @@ struct UrlState {
|
|||
|
||||
struct Curl_multi; /* declared in multihandle.c */
|
||||
|
||||
/*
|
||||
* This enumeration MUST not use conditional directives (#ifdefs), new
|
||||
* null terminated strings MUST be added to the enumeration immediately
|
||||
* before STRING_LASTZEROTERMINATED, binary fields immediately before
|
||||
* STRING_LAST. When doing so, ensure that the packages/OS400/chkstring.c
|
||||
* test is updated and applicable changes for EBCDIC to ASCII conversion
|
||||
* are catered for in curl_easy_setopt_ccsid()
|
||||
*/
|
||||
enum dupstring {
|
||||
STRING_CERT, /* client certificate file name */
|
||||
STRING_CERT_PROXY, /* client certificate file name */
|
||||
STRING_CERT_TYPE, /* format for certificate (default: PEM)*/
|
||||
STRING_KEY, /* private key file name */
|
||||
STRING_KEY_PASSWD, /* plain text private key password */
|
||||
STRING_KEY_TYPE, /* format for private key (default: PEM) */
|
||||
STRING_SSL_CAPATH, /* CA directory name (doesn't work on windows) */
|
||||
STRING_SSL_CAFILE, /* certificate file to verify peer against */
|
||||
STRING_SSL_PINNEDPUBLICKEY, /* public key file to verify peer against */
|
||||
STRING_SSL_CIPHER_LIST, /* list of ciphers to use */
|
||||
STRING_SSL_CIPHER13_LIST, /* list of TLS 1.3 ciphers to use */
|
||||
STRING_SSL_CRLFILE, /* crl file to check certificate */
|
||||
STRING_SSL_ISSUERCERT, /* issuer cert file to check certificate */
|
||||
STRING_SERVICE_NAME, /* Service name */
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
STRING_CERT_PROXY, /* client certificate file name */
|
||||
STRING_CERT_TYPE_PROXY, /* format for certificate (default: PEM)*/
|
||||
STRING_KEY_PROXY, /* private key file name */
|
||||
STRING_KEY_PASSWD_PROXY, /* plain text private key password */
|
||||
STRING_KEY_TYPE_PROXY, /* format for private key (default: PEM) */
|
||||
STRING_SSL_CAPATH_PROXY, /* CA directory name (doesn't work on windows) */
|
||||
STRING_SSL_CAFILE_PROXY, /* certificate file to verify peer against */
|
||||
STRING_SSL_PINNEDPUBLICKEY_PROXY, /* public key file to verify proxy */
|
||||
STRING_SSL_CIPHER_LIST_PROXY, /* list of ciphers to use */
|
||||
STRING_SSL_CIPHER13_LIST_PROXY, /* list of TLS 1.3 ciphers to use */
|
||||
STRING_SSL_CRLFILE_PROXY, /* crl file to check certificate */
|
||||
STRING_SSL_ISSUERCERT_PROXY, /* issuer cert file to check certificate */
|
||||
STRING_PROXY_SERVICE_NAME, /* Proxy service name */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_COOKIES
|
||||
STRING_COOKIE, /* HTTP cookie string to send */
|
||||
STRING_COOKIEJAR, /* dump all cookies to this file */
|
||||
#endif
|
||||
STRING_CUSTOMREQUEST, /* HTTP/FTP/RTSP request/method to use */
|
||||
STRING_DEFAULT_PROTOCOL, /* Protocol to use when the URL doesn't specify */
|
||||
STRING_DEVICE, /* local network interface/address to use */
|
||||
STRING_ENCODING, /* Accept-Encoding string */
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
STRING_FTP_ACCOUNT, /* ftp account data */
|
||||
STRING_FTP_ALTERNATIVE_TO_USER, /* command to send if USER/PASS fails */
|
||||
STRING_FTPPORT, /* port to send with the FTP PORT command */
|
||||
STRING_KEY, /* private key file name */
|
||||
STRING_KEY_PROXY, /* private key file name */
|
||||
STRING_KEY_PASSWD, /* plain text private key password */
|
||||
STRING_KEY_PASSWD_PROXY, /* plain text private key password */
|
||||
STRING_KEY_TYPE, /* format for private key (default: PEM) */
|
||||
STRING_KEY_TYPE_PROXY, /* format for private key (default: PEM) */
|
||||
#endif
|
||||
#if defined(HAVE_GSSAPI)
|
||||
STRING_KRB_LEVEL, /* krb security level */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_NETRC
|
||||
STRING_NETRC_FILE, /* if not NULL, use this instead of trying to find
|
||||
$HOME/.netrc */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
STRING_PROXY, /* proxy to use */
|
||||
STRING_PRE_PROXY, /* pre socks proxy to use */
|
||||
#endif
|
||||
STRING_SET_RANGE, /* range, if used */
|
||||
STRING_SET_REFERER, /* custom string for the HTTP referer field */
|
||||
STRING_SET_URL, /* what original URL to work on */
|
||||
STRING_SSL_CAPATH, /* CA directory name (doesn't work on windows) */
|
||||
STRING_SSL_CAPATH_PROXY, /* CA directory name (doesn't work on windows) */
|
||||
STRING_SSL_CAFILE, /* certificate file to verify peer against */
|
||||
STRING_SSL_CAFILE_PROXY, /* certificate file to verify peer against */
|
||||
STRING_SSL_PINNEDPUBLICKEY, /* public key file to verify peer against */
|
||||
STRING_SSL_PINNEDPUBLICKEY_PROXY, /* public key file to verify proxy */
|
||||
STRING_SSL_CIPHER_LIST, /* list of ciphers to use */
|
||||
STRING_SSL_CIPHER_LIST_PROXY, /* list of ciphers to use */
|
||||
STRING_SSL_CIPHER13_LIST, /* list of TLS 1.3 ciphers to use */
|
||||
STRING_SSL_CIPHER13_LIST_PROXY, /* list of TLS 1.3 ciphers to use */
|
||||
STRING_USERAGENT, /* User-Agent string */
|
||||
STRING_SSL_CRLFILE, /* crl file to check certificate */
|
||||
STRING_SSL_CRLFILE_PROXY, /* crl file to check certificate */
|
||||
STRING_SSL_ISSUERCERT, /* issuer cert file to check certificate */
|
||||
STRING_SSL_ISSUERCERT_PROXY, /* issuer cert file to check certificate */
|
||||
STRING_SSL_ENGINE, /* name of ssl engine */
|
||||
STRING_USERNAME, /* <username>, if used */
|
||||
STRING_PASSWORD, /* <password>, if used */
|
||||
STRING_OPTIONS, /* <options>, if used */
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
STRING_PROXYUSERNAME, /* Proxy <username>, if used */
|
||||
STRING_PROXYPASSWORD, /* Proxy <password>, if used */
|
||||
STRING_NOPROXY, /* List of hosts which should not use the proxy, if
|
||||
used */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_RTSP
|
||||
STRING_RTSP_SESSION_ID, /* Session ID to use */
|
||||
STRING_RTSP_STREAM_URI, /* Stream URI for this request */
|
||||
STRING_RTSP_TRANSPORT, /* Transport for this session */
|
||||
#endif
|
||||
#ifdef USE_SSH
|
||||
STRING_SSH_PRIVATE_KEY, /* path to the private key file for auth */
|
||||
STRING_SSH_PUBLIC_KEY, /* path to the public key file for auth */
|
||||
STRING_SSH_HOST_PUBLIC_KEY_MD5, /* md5 of host public key in ascii hex */
|
||||
STRING_SSH_HOST_PUBLIC_KEY_SHA256, /* sha256 of host public key in base64 */
|
||||
STRING_SSH_KNOWNHOSTS, /* file name of knownhosts file */
|
||||
STRING_PROXY_SERVICE_NAME, /* Proxy service name */
|
||||
STRING_SERVICE_NAME, /* Service name */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_SMTP
|
||||
STRING_MAIL_FROM,
|
||||
STRING_MAIL_AUTH,
|
||||
#endif
|
||||
#ifdef USE_TLS_SRP
|
||||
STRING_TLSAUTH_USERNAME, /* TLS auth <username> */
|
||||
STRING_TLSAUTH_USERNAME_PROXY, /* TLS auth <username> */
|
||||
STRING_TLSAUTH_PASSWORD, /* TLS auth <password> */
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
STRING_TLSAUTH_USERNAME_PROXY, /* TLS auth <username> */
|
||||
STRING_TLSAUTH_PASSWORD_PROXY, /* TLS auth <password> */
|
||||
#endif
|
||||
#endif
|
||||
STRING_BEARER, /* <bearer>, if used */
|
||||
#ifdef USE_UNIX_SOCKETS
|
||||
STRING_UNIX_SOCKET_PATH, /* path to Unix socket, if used */
|
||||
#endif
|
||||
STRING_TARGET, /* CURLOPT_REQUEST_TARGET */
|
||||
#ifndef CURL_DISABLE_DOH
|
||||
STRING_DOH, /* CURLOPT_DOH_URL */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_ALTSVC
|
||||
STRING_ALTSVC, /* CURLOPT_ALTSVC */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_HSTS
|
||||
STRING_HSTS, /* CURLOPT_HSTS */
|
||||
#endif
|
||||
STRING_SASL_AUTHZID, /* CURLOPT_SASL_AUTHZID */
|
||||
#ifdef USE_ARES
|
||||
STRING_DNS_SERVERS,
|
||||
STRING_DNS_INTERFACE,
|
||||
STRING_DNS_LOCAL_IP4,
|
||||
STRING_DNS_LOCAL_IP6,
|
||||
#endif
|
||||
STRING_SSL_EC_CURVES,
|
||||
#ifndef CURL_DISABLE_AWS
|
||||
STRING_AWS_SIGV4, /* Parameters for V4 signature */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
STRING_HAPROXY_CLIENT_IP, /* CURLOPT_HAPROXY_CLIENT_IP */
|
||||
#endif
|
||||
|
||||
/* -- end of null-terminated strings -- */
|
||||
|
||||
|
|
@ -1510,13 +1546,15 @@ enum dupstring {
|
|||
|
||||
enum dupblob {
|
||||
BLOB_CERT,
|
||||
BLOB_CERT_PROXY,
|
||||
BLOB_KEY,
|
||||
BLOB_KEY_PROXY,
|
||||
BLOB_SSL_ISSUERCERT,
|
||||
BLOB_SSL_ISSUERCERT_PROXY,
|
||||
BLOB_CAINFO,
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
BLOB_CERT_PROXY,
|
||||
BLOB_KEY_PROXY,
|
||||
BLOB_SSL_ISSUERCERT_PROXY,
|
||||
BLOB_CAINFO_PROXY,
|
||||
#endif
|
||||
BLOB_LAST
|
||||
};
|
||||
|
||||
|
|
@ -1735,7 +1773,9 @@ struct UserDefined {
|
|||
BIT(cookiesession); /* new cookie session? */
|
||||
#endif
|
||||
BIT(crlf); /* convert crlf on ftp upload(?) */
|
||||
#ifdef USE_SSH
|
||||
BIT(ssh_compression); /* enable SSH compression */
|
||||
#endif
|
||||
|
||||
/* Here follows boolean settings that define how to behave during
|
||||
this session. They are STATIC, set by libcurl users or at least initially
|
||||
|
|
@ -1745,7 +1785,9 @@ struct UserDefined {
|
|||
don't want lengthy cleanups to delay termination,
|
||||
e.g. after a DNS timeout */
|
||||
BIT(get_filetime); /* get the time and get of the remote file */
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
BIT(tunnel_thru_httpproxy); /* use CONNECT through an HTTP proxy */
|
||||
#endif
|
||||
BIT(prefer_ascii); /* ASCII rather than binary */
|
||||
BIT(remote_append); /* append, not overwrite, on upload */
|
||||
#ifdef CURL_LIST_ONLY_PROTOCOL
|
||||
|
|
@ -1772,7 +1814,9 @@ struct UserDefined {
|
|||
location: */
|
||||
BIT(opt_no_body); /* as set with CURLOPT_NOBODY */
|
||||
BIT(verbose); /* output verbosity */
|
||||
#if defined(HAVE_GSSAPI)
|
||||
BIT(krb); /* Kerberos connection requested */
|
||||
#endif
|
||||
BIT(reuse_forbid); /* forbidden to be reused, close after use */
|
||||
BIT(reuse_fresh); /* do not reuse an existing connection */
|
||||
BIT(no_signal); /* do not use any signal/alarm handler */
|
||||
|
|
@ -1797,9 +1841,13 @@ struct UserDefined {
|
|||
BIT(suppress_connect_headers); /* suppress proxy CONNECT response headers
|
||||
from user callbacks */
|
||||
BIT(dns_shuffle_addresses); /* whether to shuffle addresses before use */
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
BIT(haproxyprotocol); /* whether to send HAProxy PROXY protocol v1
|
||||
header */
|
||||
#endif
|
||||
#ifdef USE_UNIX_SOCKETS
|
||||
BIT(abstract_unix_socket);
|
||||
#endif
|
||||
BIT(disallow_username_in_url); /* disallow username in url */
|
||||
#ifndef CURL_DISABLE_DOH
|
||||
BIT(doh); /* DNS-over-HTTPS enabled */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue