mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 08:38:49 -05:00
libcurl: #ifdef away more code for disabled features/protocols
This commit is contained in:
parent
3b06e68b77
commit
e91e481612
@ -885,6 +885,8 @@ check_symbol_exists(freeifaddrs "${CURL_INCLUDES}" HAVE_FREEIFADDRS)
|
||||
check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE)
|
||||
check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
|
||||
check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
|
||||
check_symbol_exists(getpeername "${CURL_INCLUDES}" HAVE_GETPEERNAME)
|
||||
check_symbol_exists(getsockname "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
|
||||
check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
|
||||
check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
|
||||
check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE)
|
||||
|
@ -3772,6 +3772,8 @@ AC_CHECK_FUNCS([fnmatch \
|
||||
getpwuid_r \
|
||||
getrlimit \
|
||||
gettimeofday \
|
||||
getpeername \
|
||||
getsockname \
|
||||
if_nametoindex \
|
||||
mach_absolute_time \
|
||||
pipe \
|
||||
|
@ -7,7 +7,7 @@
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 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
|
||||
@ -185,6 +185,9 @@
|
||||
/* Define if you have the ftruncate function. */
|
||||
#define HAVE_FTRUNCATE 1
|
||||
|
||||
/* Define to 1 if you have the `getpeername' function. */
|
||||
#define HAVE_GETPEERNAME 1
|
||||
|
||||
/* Define if you have the gethostbyaddr function. */
|
||||
#define HAVE_GETHOSTBYADDR 1
|
||||
|
||||
|
@ -679,17 +679,18 @@ UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
|
||||
connection */
|
||||
void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
|
||||
{
|
||||
curl_socklen_t len;
|
||||
struct Curl_sockaddr_storage ssrem;
|
||||
struct Curl_sockaddr_storage ssloc;
|
||||
struct Curl_easy *data = conn->data;
|
||||
|
||||
if(conn->socktype == SOCK_DGRAM)
|
||||
/* there's no connection! */
|
||||
return;
|
||||
|
||||
#if defined(HAVE_GETPEERNAME) || defined(HAVE_GETSOCKNAME)
|
||||
if(!conn->bits.reuse && !conn->bits.tcp_fastopen) {
|
||||
struct Curl_easy *data = conn->data;
|
||||
char buffer[STRERROR_LEN];
|
||||
struct Curl_sockaddr_storage ssrem;
|
||||
struct Curl_sockaddr_storage ssloc;
|
||||
curl_socklen_t len;
|
||||
#ifdef HAVE_GETPEERNAME
|
||||
len = sizeof(struct Curl_sockaddr_storage);
|
||||
if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) {
|
||||
int error = SOCKERRNO;
|
||||
@ -697,7 +698,8 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
|
||||
error, Curl_strerror(error, buffer, sizeof(buffer)));
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
#ifdef HAVE_GETSOCKNAME
|
||||
len = sizeof(struct Curl_sockaddr_storage);
|
||||
memset(&ssloc, 0, sizeof(ssloc));
|
||||
if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) {
|
||||
@ -706,7 +708,8 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
|
||||
error, Curl_strerror(error, buffer, sizeof(buffer)));
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
#ifdef HAVE_GETPEERNAME
|
||||
if(!getaddressinfo((struct sockaddr*)&ssrem,
|
||||
conn->primary_ip, &conn->primary_port)) {
|
||||
failf(data, "ssrem inet_ntop() failed with errno %d: %s",
|
||||
@ -714,15 +717,17 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
|
||||
return;
|
||||
}
|
||||
memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
|
||||
|
||||
#endif
|
||||
#ifdef HAVE_GETSOCKNAME
|
||||
if(!getaddressinfo((struct sockaddr*)&ssloc,
|
||||
conn->local_ip, &conn->local_port)) {
|
||||
failf(data, "ssloc inet_ntop() failed with errno %d: %s",
|
||||
errno, Curl_strerror(errno, buffer, sizeof(buffer)));
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/* persist connection info in session handle */
|
||||
Curl_persistconninfo(conn);
|
||||
|
@ -235,6 +235,12 @@
|
||||
/* Define to 1 if you have the `getprotobyname' function. */
|
||||
#cmakedefine HAVE_GETPROTOBYNAME 1
|
||||
|
||||
/* Define to 1 if you have the `getpeername' function. */
|
||||
#cmakedefine HAVE_GETPEERNAME 1
|
||||
|
||||
/* Define to 1 if you have the `getsockname' function. */
|
||||
#cmakedefine HAVE_GETSOCKNAME 1
|
||||
|
||||
/* Define to 1 if you have the `getpwuid' function. */
|
||||
#cmakedefine HAVE_GETPWUID 1
|
||||
|
||||
|
197
lib/setopt.c
197
lib/setopt.c
@ -277,27 +277,6 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
*/
|
||||
data->set.get_filetime = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
case CURLOPT_FTP_CREATE_MISSING_DIRS:
|
||||
/*
|
||||
* An FTP option that modifies an upload to create missing directories on
|
||||
* the server.
|
||||
*/
|
||||
switch(va_arg(param, long)) {
|
||||
case 0:
|
||||
data->set.ftp_create_missing_dirs = 0;
|
||||
break;
|
||||
case 1:
|
||||
data->set.ftp_create_missing_dirs = 1;
|
||||
break;
|
||||
case 2:
|
||||
data->set.ftp_create_missing_dirs = 2;
|
||||
break;
|
||||
default:
|
||||
/* reserve other values for future use */
|
||||
result = CURLE_UNKNOWN_OPTION;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CURLOPT_SERVER_RESPONSE_TIMEOUT:
|
||||
/*
|
||||
* Option that specifies how quickly an server response must be obtained
|
||||
@ -309,6 +288,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
else
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
break;
|
||||
#ifndef CURL_DISABLE_TFTP
|
||||
case CURLOPT_TFTP_NO_OPTIONS:
|
||||
/*
|
||||
* Option that prevents libcurl from sending TFTP option requests to the
|
||||
@ -325,28 +305,8 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.tftp_blksize = arg;
|
||||
break;
|
||||
case CURLOPT_DIRLISTONLY:
|
||||
/*
|
||||
* An option that changes the command to one that asks for a list
|
||||
* only, no file info details.
|
||||
*/
|
||||
data->set.ftp_list_only = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
case CURLOPT_APPEND:
|
||||
/*
|
||||
* We want to upload and append to an existing file.
|
||||
*/
|
||||
data->set.ftp_append = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
case CURLOPT_FTP_FILEMETHOD:
|
||||
/*
|
||||
* How do access files over FTP.
|
||||
*/
|
||||
arg = va_arg(param, long);
|
||||
if((arg < CURLFTPMETHOD_DEFAULT) || (arg > CURLFTPMETHOD_SINGLECWD))
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.ftp_filemethod = (curl_ftpfile)arg;
|
||||
break;
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_NETRC
|
||||
case CURLOPT_NETRC:
|
||||
/*
|
||||
* Parse the $HOME/.netrc file
|
||||
@ -363,6 +323,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_NETRC_FILE],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_TRANSFERTEXT:
|
||||
/*
|
||||
* This option was previously named 'FTPASCII'. Renamed to work with
|
||||
@ -1079,7 +1040,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
data->set.socks5_gssapi_nec = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
case CURLOPT_SOCKS5_GSSAPI_SERVICE:
|
||||
case CURLOPT_PROXY_SERVICE_NAME:
|
||||
/*
|
||||
@ -1088,7 +1049,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_PROXY_SERVICE_NAME],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
|
||||
#endif
|
||||
case CURLOPT_SERVICE_NAME:
|
||||
/*
|
||||
* Set authentication service name for DIGEST-MD5, Kerberos 5 and SPNEGO
|
||||
@ -1117,7 +1078,33 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
*/
|
||||
data->set.out = va_arg(param, void *);
|
||||
break;
|
||||
|
||||
case CURLOPT_DIRLISTONLY:
|
||||
/*
|
||||
* An option that changes the command to one that asks for a list only, no
|
||||
* file info details. Used for FTP, POP3 and SFTP.
|
||||
*/
|
||||
data->set.ftp_list_only = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
case CURLOPT_APPEND:
|
||||
/*
|
||||
* We want to upload and append to an existing file. Used for FTP and
|
||||
* SFTP.
|
||||
*/
|
||||
data->set.ftp_append = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
case CURLOPT_FTP_FILEMETHOD:
|
||||
/*
|
||||
* How do access files over FTP.
|
||||
*/
|
||||
arg = va_arg(param, long);
|
||||
if((arg < CURLFTPMETHOD_DEFAULT) || (arg > CURLFTPMETHOD_SINGLECWD))
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.ftp_filemethod = (curl_ftpfile)arg;
|
||||
break;
|
||||
case CURLOPT_FTPPORT:
|
||||
/*
|
||||
* Use FTP PORT, this also specifies which IP address to use
|
||||
@ -1153,7 +1140,56 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
*/
|
||||
data->set.ftp_skip_ip = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
case CURLOPT_FTP_ACCOUNT:
|
||||
result = Curl_setstropt(&data->set.str[STRING_FTP_ACCOUNT],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
|
||||
case CURLOPT_FTP_ALTERNATIVE_TO_USER:
|
||||
result = Curl_setstropt(&data->set.str[STRING_FTP_ALTERNATIVE_TO_USER],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
|
||||
case CURLOPT_FTPSSLAUTH:
|
||||
/*
|
||||
* Set a specific auth for FTP-SSL transfers.
|
||||
*/
|
||||
arg = va_arg(param, long);
|
||||
if((arg < CURLFTPAUTH_DEFAULT) || (arg > CURLFTPAUTH_TLS))
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.ftpsslauth = (curl_ftpauth)arg;
|
||||
break;
|
||||
case CURLOPT_KRBLEVEL:
|
||||
/*
|
||||
* A string that defines the kerberos security level.
|
||||
*/
|
||||
result = Curl_setstropt(&data->set.str[STRING_KRB_LEVEL],
|
||||
va_arg(param, char *));
|
||||
data->set.krb = (data->set.str[STRING_KRB_LEVEL]) ? TRUE : FALSE;
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_FTP_CREATE_MISSING_DIRS:
|
||||
/*
|
||||
* An FTP/SFTP option that modifies an upload to create missing
|
||||
* directories on the server.
|
||||
*/
|
||||
switch(va_arg(param, long)) {
|
||||
case 0:
|
||||
data->set.ftp_create_missing_dirs = 0;
|
||||
break;
|
||||
case 1:
|
||||
data->set.ftp_create_missing_dirs = 1;
|
||||
break;
|
||||
case 2:
|
||||
data->set.ftp_create_missing_dirs = 2;
|
||||
break;
|
||||
default:
|
||||
/* reserve other values for future use */
|
||||
result = CURLE_UNKNOWN_OPTION;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CURLOPT_READDATA:
|
||||
/*
|
||||
* FILE pointer to read the file to be uploaded from. Or possibly
|
||||
@ -1562,6 +1598,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_CERT_ORIG],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
case CURLOPT_PROXY_SSLCERT:
|
||||
/*
|
||||
* String that holds file name of the SSL certificate to use for proxy
|
||||
@ -1569,6 +1606,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_CERT_PROXY],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_SSLCERTTYPE:
|
||||
/*
|
||||
* String that holds file type of the SSL certificate to use
|
||||
@ -1576,6 +1614,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_ORIG],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
case CURLOPT_PROXY_SSLCERTTYPE:
|
||||
/*
|
||||
* String that holds file type of the SSL certificate to use for proxy
|
||||
@ -1583,6 +1622,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_PROXY],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_SSLKEY:
|
||||
/*
|
||||
* String that holds file name of the SSL key to use
|
||||
@ -1590,6 +1630,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_KEY_ORIG],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
case CURLOPT_PROXY_SSLKEY:
|
||||
/*
|
||||
* String that holds file name of the SSL key to use for proxy
|
||||
@ -1597,6 +1638,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_KEY_PROXY],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_SSLKEYTYPE:
|
||||
/*
|
||||
* String that holds file type of the SSL key to use
|
||||
@ -1604,6 +1646,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_ORIG],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
case CURLOPT_PROXY_SSLKEYTYPE:
|
||||
/*
|
||||
* String that holds file type of the SSL key to use for proxy
|
||||
@ -1611,6 +1654,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_PROXY],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_KEYPASSWD:
|
||||
/*
|
||||
* String that holds the SSL or SSH private key password.
|
||||
@ -1618,6 +1662,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD_ORIG],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
case CURLOPT_PROXY_KEYPASSWD:
|
||||
/*
|
||||
* String that holds the SSL private key password for proxy.
|
||||
@ -1625,6 +1670,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD_PROXY],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_SSLENGINE:
|
||||
/*
|
||||
* String that holds the SSL crypto engine.
|
||||
@ -1651,14 +1697,14 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
*/
|
||||
data->set.crlf = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
case CURLOPT_HAPROXYPROTOCOL:
|
||||
/*
|
||||
* Set to send the HAProxy Proxy Protocol header
|
||||
*/
|
||||
data->set.haproxyprotocol = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
#endif
|
||||
case CURLOPT_INTERFACE:
|
||||
/*
|
||||
* Set what interface or address/hostname to bind the socket to when
|
||||
@ -1685,14 +1731,6 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.localportrange = curlx_sltosi(arg);
|
||||
break;
|
||||
case CURLOPT_KRBLEVEL:
|
||||
/*
|
||||
* A string that defines the kerberos security level.
|
||||
*/
|
||||
result = Curl_setstropt(&data->set.str[STRING_KRB_LEVEL],
|
||||
va_arg(param, char *));
|
||||
data->set.krb = (data->set.str[STRING_KRB_LEVEL]) ? TRUE : FALSE;
|
||||
break;
|
||||
case CURLOPT_GSSAPI_DELEGATION:
|
||||
/*
|
||||
* GSS-API credential delegation bitmask
|
||||
@ -1940,13 +1978,14 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_SSL_ISSUERCERT_ORIG],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
#ifndef CURL_DISABLE_TELNET
|
||||
case CURLOPT_TELNETOPTIONS:
|
||||
/*
|
||||
* Set a linked list of telnet options
|
||||
*/
|
||||
data->set.telnet_options = va_arg(param, struct curl_slist *);
|
||||
break;
|
||||
|
||||
#endif
|
||||
case CURLOPT_BUFFERSIZE:
|
||||
/*
|
||||
* The application kindly asks for a differently sized receive buffer.
|
||||
@ -2114,16 +2153,6 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
#endif
|
||||
|
||||
#endif
|
||||
case CURLOPT_FTPSSLAUTH:
|
||||
/*
|
||||
* Set a specific auth for FTP-SSL transfers.
|
||||
*/
|
||||
arg = va_arg(param, long);
|
||||
if((arg < CURLFTPAUTH_DEFAULT) || (arg > CURLFTPAUTH_TLS))
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.ftpsslauth = (curl_ftpauth)arg;
|
||||
break;
|
||||
|
||||
case CURLOPT_IPRESOLVE:
|
||||
arg = va_arg(param, long);
|
||||
if((arg < CURL_IPRESOLVE_WHATEVER) || (arg > CURL_IPRESOLVE_V6))
|
||||
@ -2149,11 +2178,6 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
data->set.tcp_nodelay = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
case CURLOPT_FTP_ACCOUNT:
|
||||
result = Curl_setstropt(&data->set.str[STRING_FTP_ACCOUNT],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
|
||||
case CURLOPT_IGNORE_CONTENT_LENGTH:
|
||||
data->set.ignorecl = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
@ -2165,11 +2189,6 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
data->set.connect_only = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
case CURLOPT_FTP_ALTERNATIVE_TO_USER:
|
||||
result = Curl_setstropt(&data->set.str[STRING_FTP_ALTERNATIVE_TO_USER],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
|
||||
case CURLOPT_SOCKOPTFUNCTION:
|
||||
/*
|
||||
* socket callback function: called after socket() but before connect()
|
||||
@ -2285,6 +2304,10 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
*/
|
||||
data->set.ssh_keyfunc_userp = va_arg(param, void *);
|
||||
break;
|
||||
|
||||
case CURLOPT_SSH_COMPRESSION:
|
||||
data->set.ssh_compression = (0 != va_arg(param, long))?TRUE:FALSE;
|
||||
break;
|
||||
#endif /* USE_SSH */
|
||||
|
||||
case CURLOPT_HTTP_TRANSFER_DECODING:
|
||||
@ -2301,6 +2324,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
data->set.http_ce_skip = (0 == va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
#if !defined(CURL_DISABLE_FTP) || defined(USE_SSH)
|
||||
case CURLOPT_NEW_FILE_PERMS:
|
||||
/*
|
||||
* Uses these permissions instead of 0644
|
||||
@ -2320,6 +2344,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.new_directory_perms = arg;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case CURLOPT_ADDRESS_SCOPE:
|
||||
/*
|
||||
@ -2356,7 +2381,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = Curl_setstropt(&data->set.str[STRING_DEFAULT_PROTOCOL],
|
||||
va_arg(param, char *));
|
||||
break;
|
||||
|
||||
#ifndef CURL_DISABLE_SMTP
|
||||
case CURLOPT_MAIL_FROM:
|
||||
/* Set the SMTP mail originator */
|
||||
result = Curl_setstropt(&data->set.str[STRING_MAIL_FROM],
|
||||
@ -2373,12 +2398,13 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
/* Set the list of mail recipients */
|
||||
data->set.mail_rcpt = va_arg(param, struct curl_slist *);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case CURLOPT_SASL_IR:
|
||||
/* Enable/disable SASL initial response */
|
||||
data->set.sasl_ir = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
#ifndef CURL_DISABLE_RTSP
|
||||
case CURLOPT_RTSP_REQUEST:
|
||||
{
|
||||
/*
|
||||
@ -2487,7 +2513,8 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
/* Set the user defined RTP write function */
|
||||
data->set.fwrite_rtp = va_arg(param, curl_write_callback);
|
||||
break;
|
||||
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
case CURLOPT_WILDCARDMATCH:
|
||||
data->set.wildcard_enabled = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
@ -2500,7 +2527,6 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
case CURLOPT_FNMATCH_FUNCTION:
|
||||
data->set.fnmatch = va_arg(param, curl_fnmatch_callback);
|
||||
break;
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
case CURLOPT_CHUNK_DATA:
|
||||
data->wildcard.customptr = va_arg(param, void *);
|
||||
break;
|
||||
@ -2552,6 +2578,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
data->set.proxy_ssl.authtype = CURL_TLSAUTH_NONE;
|
||||
break;
|
||||
#endif
|
||||
#ifdef USE_ARES
|
||||
case CURLOPT_DNS_SERVERS:
|
||||
result = Curl_set_dns_servers(data, va_arg(param, char *));
|
||||
break;
|
||||
@ -2564,7 +2591,7 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
case CURLOPT_DNS_LOCAL_IP6:
|
||||
result = Curl_set_dns_local_ip6(data, va_arg(param, char *));
|
||||
break;
|
||||
|
||||
#endif
|
||||
case CURLOPT_TCP_KEEPALIVE:
|
||||
data->set.tcp_keepalive = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
@ -2588,13 +2615,14 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
result = CURLE_NOT_BUILT_IN;
|
||||
#endif
|
||||
break;
|
||||
#ifdef USE_NGHTTP2
|
||||
case CURLOPT_SSL_ENABLE_NPN:
|
||||
data->set.ssl_enable_npn = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
case CURLOPT_SSL_ENABLE_ALPN:
|
||||
data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
|
||||
#endif
|
||||
#ifdef USE_UNIX_SOCKETS
|
||||
case CURLOPT_UNIX_SOCKET_PATH:
|
||||
data->set.abstract_unix_socket = FALSE;
|
||||
@ -2645,9 +2673,6 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
case CURLOPT_SUPPRESS_CONNECT_HEADERS:
|
||||
data->set.suppress_connect_headers = (0 != va_arg(param, long))?TRUE:FALSE;
|
||||
break;
|
||||
case CURLOPT_SSH_COMPRESSION:
|
||||
data->set.ssh_compression = (0 != va_arg(param, long))?TRUE:FALSE;
|
||||
break;
|
||||
case CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS:
|
||||
arg = va_arg(param, long);
|
||||
if(arg < 0)
|
||||
@ -2663,11 +2688,13 @@ static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
|
||||
data->set.disallow_username_in_url =
|
||||
(0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
break;
|
||||
#ifndef CURL_DISABLE_DOH
|
||||
case CURLOPT_DOH_URL:
|
||||
result = Curl_setstropt(&data->set.str[STRING_DOH],
|
||||
va_arg(param, char *));
|
||||
data->set.doh = data->set.str[STRING_DOH]?TRUE:FALSE;
|
||||
break;
|
||||
#endif
|
||||
case CURLOPT_UPKEEP_INTERVAL_MS:
|
||||
arg = va_arg(param, long);
|
||||
if(arg < 0)
|
||||
|
@ -439,11 +439,12 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
|
||||
|
||||
set->httpreq = HTTPREQ_GET; /* Default HTTP request */
|
||||
set->rtspreq = RTSPREQ_OPTIONS; /* Default RTSP request */
|
||||
#ifndef CURL_DISABLE_FILE
|
||||
set->ftp_use_epsv = TRUE; /* FTP defaults to EPSV operations */
|
||||
set->ftp_use_eprt = TRUE; /* FTP defaults to EPRT operations */
|
||||
set->ftp_use_pret = FALSE; /* mainly useful for drftpd servers */
|
||||
set->ftp_filemethod = FTPFILE_MULTICWD;
|
||||
|
||||
#endif
|
||||
set->dns_cache_timeout = 60; /* Timeout every 60 seconds by default */
|
||||
|
||||
/* Set the default size of the SSL session ID cache */
|
||||
@ -1767,9 +1768,10 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
|
||||
#endif /* CURL_DISABLE_PROXY */
|
||||
|
||||
conn->bits.user_passwd = (data->set.str[STRING_USERNAME]) ? TRUE : FALSE;
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
conn->bits.ftp_use_epsv = data->set.ftp_use_epsv;
|
||||
conn->bits.ftp_use_eprt = data->set.ftp_use_eprt;
|
||||
|
||||
#endif
|
||||
conn->ssl_config.verifystatus = data->set.ssl.primary.verifystatus;
|
||||
conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer;
|
||||
conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost;
|
||||
|
@ -434,6 +434,7 @@ struct ConnectBits {
|
||||
though it will be discarded. When the whole send
|
||||
operation is done, we must call the data rewind
|
||||
callback. */
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
bit ftp_use_epsv:1; /* As set with CURLOPT_FTP_USE_EPSV, but if we find out
|
||||
EPSV doesn't work we disable it for the forthcoming
|
||||
requests */
|
||||
@ -441,6 +442,7 @@ struct ConnectBits {
|
||||
EPRT doesn't work we disable it for the forthcoming
|
||||
requests */
|
||||
bit ftp_use_data_ssl:1; /* Enabled SSL for the data connection */
|
||||
#endif
|
||||
bit netrc:1; /* name+password provided by netrc */
|
||||
bit userpwd_in_url:1; /* name+password found in url */
|
||||
bit stream_was_rewound:1; /* The stream was rewound after a request read
|
||||
@ -1614,7 +1616,11 @@ struct UserDefined {
|
||||
long ipver; /* the CURL_IPRESOLVE_* defines in the public header file
|
||||
0 - whatever, 1 - v2, 2 - v6 */
|
||||
curl_off_t max_filesize; /* Maximum file size to download */
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
curl_ftpfile ftp_filemethod; /* how to get to a file when FTP is used */
|
||||
curl_ftpauth ftpsslauth; /* what AUTH XXX to be attempted */
|
||||
curl_ftpccc ftp_ccc; /* FTP CCC options */
|
||||
#endif
|
||||
int ftp_create_missing_dirs; /* 1 - create directories that don't exist
|
||||
2 - the same but also allow MKD to fail once
|
||||
*/
|
||||
@ -1624,8 +1630,6 @@ struct UserDefined {
|
||||
use_netrc; /* defined in include/curl.h */
|
||||
curl_usessl use_ssl; /* if AUTH TLS is to be attempted etc, for FTP or
|
||||
IMAP or POP3 or others! */
|
||||
curl_ftpauth ftpsslauth; /* what AUTH XXX to be attempted */
|
||||
curl_ftpccc ftp_ccc; /* FTP CCC options */
|
||||
long new_file_perms; /* Permissions to use when creating remote files */
|
||||
long new_directory_perms; /* Permissions to use when creating remote dirs */
|
||||
long ssh_auth_types; /* allowed SSH auth types */
|
||||
@ -1686,7 +1690,14 @@ struct UserDefined {
|
||||
bit prefer_ascii:1; /* ASCII rather than binary */
|
||||
bit ftp_append:1; /* append, not overwrite, on upload */
|
||||
bit ftp_list_only:1; /* switch FTP command for listing directories */
|
||||
#ifndef CURL_DISABLE_FTP
|
||||
bit ftp_use_port:1; /* use the FTP PORT command */
|
||||
bit ftp_use_epsv:1; /* if EPSV is to be attempted or not */
|
||||
bit ftp_use_eprt:1; /* if EPRT is to be attempted or not */
|
||||
bit ftp_use_pret:1; /* if PRET is to be used before PASV or not */
|
||||
bit ftp_skip_ip:1; /* skip the IP address the FTP server passes on to
|
||||
us */
|
||||
#endif
|
||||
bit hide_progress:1; /* don't use the progress meter */
|
||||
bit http_fail_on_error:1; /* fail on HTTP error codes >= 400 */
|
||||
bit http_keep_sending_on_error:1; /* for HTTP status codes >= 300 */
|
||||
@ -1704,15 +1715,10 @@ struct UserDefined {
|
||||
bit krb:1; /* Kerberos connection requested */
|
||||
bit reuse_forbid:1; /* forbidden to be reused, close after use */
|
||||
bit reuse_fresh:1; /* do not re-use an existing connection */
|
||||
bit ftp_use_epsv:1; /* if EPSV is to be attempted or not */
|
||||
bit ftp_use_eprt:1; /* if EPRT is to be attempted or not */
|
||||
bit ftp_use_pret:1; /* if PRET is to be used before PASV or not */
|
||||
|
||||
bit no_signal:1; /* do not use any signal/alarm handler */
|
||||
bit tcp_nodelay:1; /* whether to enable TCP_NODELAY or not */
|
||||
bit ignorecl:1; /* ignore content length */
|
||||
bit ftp_skip_ip:1; /* skip the IP address the FTP server passes on to
|
||||
us */
|
||||
bit connect_only:1; /* make connection, let application use the socket */
|
||||
bit http_te_skip:1; /* pass the raw body data to the user, even when
|
||||
transfer-encoded (chunked, compressed) */
|
||||
|
Loading…
Reference in New Issue
Block a user