1 #ifndef HEADER_CURL_URLDATA_H 2 #define HEADER_CURL_URLDATA_H 31 #define PORT_TELNET 23 33 #define PORT_HTTPS 443 34 #define PORT_DICT 2628 36 #define PORT_LDAPS 636 40 #define PORT_IMAPS 993 42 #define PORT_POP3S 995 46 #define PORT_SMTPS 465 48 #define PORT_RTMP 1935 49 #define PORT_RTMPT PORT_HTTP 50 #define PORT_RTMPS PORT_HTTPS 51 #define PORT_GOPHER 70 53 #define DICT_MATCH "/MATCH:" 54 #define DICT_MATCH2 "/M:" 55 #define DICT_MATCH3 "/FIND:" 56 #define DICT_DEFINE "/DEFINE:" 57 #define DICT_DEFINE2 "/D:" 58 #define DICT_DEFINE3 "/LOOKUP:" 60 #define CURL_DEFAULT_USER "anonymous" 61 #define CURL_DEFAULT_PASSWORD "ftp@example.com" 66 #define PROTO_FAMILY_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS) 67 #define PROTO_FAMILY_FTP (CURLPROTO_FTP|CURLPROTO_FTPS) 68 #define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S) 69 #define PROTO_FAMILY_SMB (CURLPROTO_SMB|CURLPROTO_SMBS) 70 #define PROTO_FAMILY_SMTP (CURLPROTO_SMTP|CURLPROTO_SMTPS) 72 #define DEFAULT_CONNCACHE_SIZE 5 75 #define MAX_IPADR_LEN sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") 80 #define RESP_TIMEOUT (1800*1000) 85 #ifdef HAVE_NETINET_IN_H 86 #include <netinet/in.h> 122 # elif defined HAVE_GSSMIT 123 # include <gssapi/gssapi.h> 124 # include <gssapi/gssapi_generic.h> 130 #ifdef HAVE_LIBSSH2_H 132 #include <libssh2_sftp.h> 137 #define UPLOAD_BUFSIZE CURL_MAX_WRITE_SIZE 140 #define MASTERBUF_SIZE 16384 144 #define HEADERSIZE 256 146 #define CURLEASY_MAGIC_NUMBER 0xc0dedbadU 147 #define GOOD_EASY_HANDLE(x) \ 148 ((x) && ((x)->magic == CURLEASY_MAGIC_NUMBER)) 152 #define CURLMAX(x,y) ((x)>(y)?(x):(y)) 153 #define CURLMIN(x,y) ((x)<(y)?(x):(y)) 164 enum protection_level {
192 struct ssl_backend_data;
203 struct ssl_backend_data *backend;
265 #ifdef USE_WINDOWS_SSPI 271 #if defined(USE_WINDOWS_SSPI) 273 size_t input_token_len;
274 CtxtHandle *http_context;
300 #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) 305 #if defined(USE_KERBEROS5) 306 struct kerberos5data {
307 #if defined(USE_WINDOWS_SSPI) 308 CredHandle *credentials;
311 SEC_WINNT_AUTH_IDENTITY identity;
312 SEC_WINNT_AUTH_IDENTITY *p_identity;
323 #if defined(USE_NTLM) 326 #ifdef USE_WINDOWS_SSPI 327 CredHandle *credentials;
329 SEC_WINNT_AUTH_IDENTITY identity;
330 SEC_WINNT_AUTH_IDENTITY *p_identity;
334 size_t input_token_len;
337 unsigned char nonce[8];
339 unsigned int target_info_len;
345 struct negotiatedata {
348 enum { GSS_AUTHNONE, GSS_AUTHRECV, GSS_AUTHSENT }
state;
355 #ifdef USE_WINDOWS_SSPI 357 CredHandle *credentials;
359 SEC_WINNT_AUTH_IDENTITY identity;
360 SEC_WINNT_AUTH_IDENTITY *p_identity;
364 size_t output_token_length;
436 bool proxy_ssl_connected[2];
453 #define KEEP_RECV (1<<0) 454 #define KEEP_SEND (1<<1) 455 #define KEEP_RECV_HOLD (1<<2) 457 #define KEEP_SEND_HOLD (1<<3) 459 #define KEEP_RECV_PAUSE (1<<4) 460 #define KEEP_SEND_PAUSE (1<<5) 462 #define KEEP_RECVBITS (KEEP_RECV | KEEP_RECV_HOLD | KEEP_RECV_PAUSE) 463 #define KEEP_SENDBITS (KEEP_SEND | KEEP_SEND_HOLD | KEEP_SEND_PAUSE) 476 #ifdef CURLRES_ASYNCH 487 #define FIRSTSOCKET 0 488 #define SECONDARYSOCKET 1 570 zlibInitState zlib_init;
685 ssize_t *nread,
bool *readmore);
691 unsigned int checks_to_perform);
699 #define PROTOPT_NONE 0 700 #define PROTOPT_SSL (1<<0) 701 #define PROTOPT_DUAL (1<<1) 702 #define PROTOPT_CLOSEACTION (1<<2) 707 #define PROTOPT_DIRLOCK (1<<3) 708 #define PROTOPT_NONETWORK (1<<4) 709 #define PROTOPT_NEEDSPWD (1<<5) 711 #define PROTOPT_NOURLQUERY (1<<6) 713 #define PROTOPT_CREDSPERREQUEST (1<<7) 715 #define PROTOPT_ALPN_NPN (1<<8) 716 #define PROTOPT_STREAM (1<<9) 717 #define PROTOPT_URLOPTIONS (1<<10) 719 #define PROTOPT_PROXY_AS_HTTP (1<<11) 723 #define CONNCHECK_NONE 0 724 #define CONNCHECK_ISDEAD (1<<0) 726 #define CONNRESULT_NONE 0 727 #define CONNRESULT_DEAD (1<<0) 743 #ifdef USE_RECV_BEFORE_SEND_WORKAROUND 744 struct postponed_data {
747 size_t allocated_size;
749 size_t recv_processed;
765 #define CONNECT_BUFFER_SIZE 16384 879 bool sock_accepted[2];
884 #ifdef USE_RECV_BEFORE_SEND_WORKAROUND 885 struct postponed_data postponed[2];
933 enum protection_level command_prot;
934 enum protection_level data_prot;
935 enum protection_level request_data_prot;
937 struct krb5buffer in_buffer;
940 struct sockaddr_in local_addr;
943 #if defined(USE_KERBEROS5) 944 struct kerberos5data krb5;
970 #if defined(USE_NTLM) 971 struct ntlmdata ntlm;
974 struct ntlmdata proxyntlm;
976 #if defined(NTLM_WB_ENABLED) 979 pid_t ntlm_auth_hlpr_pid;
980 char *challenge_header;
981 char *response_header;
985 char syserr_buf [256];
987 #ifdef CURLRES_ASYNCH 989 struct Curl_async async;
1013 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) 1014 int socks5_gssapi_enctype;
1029 #ifdef USE_UNIX_SOCKETS 1030 char *unix_domain_socket;
1031 bool abstract_unix_socket;
1041 long long *align_data__do_not_use;
1132 #define CURR_TIME (5 + 1) 1176 #define MAX_CURL_USER_LENGTH 256 1177 #define MAX_CURL_PASSWORD_LENGTH 256 1277 void (*prev_signal)(
int sig);
1286 struct negotiatedata proxyneg;
1297 #if defined(USE_OPENSSL) && defined(HAVE_OPENSSL_ENGINE_H) 1319 #if !defined(WIN32) && !defined(MSDOS) && !defined(__EMX__) && \ 1320 !defined(__SYMBIAN32__) 1322 #define CURL_DO_LINEEND_CONV 1447 STRING_SSH_PRIVATE_KEY,
1448 STRING_SSH_PUBLIC_KEY,
1449 STRING_SSH_HOST_PUBLIC_KEY_MD5,
1450 STRING_SSH_KNOWNHOSTS,
1452 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) 1453 STRING_PROXY_SERVICE_NAME,
1455 #if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) || \ 1463 STRING_TLSAUTH_USERNAME_ORIG,
1464 STRING_TLSAUTH_USERNAME_PROXY,
1465 STRING_TLSAUTH_PASSWORD_ORIG,
1466 STRING_TLSAUTH_PASSWORD_PROXY,
1469 #ifdef USE_UNIX_SOCKETS 1470 STRING_UNIX_SOCKET_PATH,
1667 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) 1668 bool socks5_gssapi_nec;
1775 #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) 1776 iconv_t outbound_cd;
1783 #define LIBCURL_NAME "libcurl"
struct connectdata * lastconnect
ssize_t( Curl_recv)(struct connectdata *conn, int sockindex, char *buf, size_t len, CURLcode *err)
int(* curl_fnmatch_callback)(void *ptr, const char *pattern, const char *string)
struct Curl_easy * stream_depends_on
bool prev_block_had_trailing_cr
curl_write_callback fwrite_rtp
struct curl_slist * source_prequote
bool socksproxy_connecting
static int domore_getsock(struct connectdata *conn, curl_socket_t *socks, int numsocks)
struct curl_slist * prequote
curl_opensocket_callback fopensocket
struct Curl_easy * stream_depends_on
int(* curl_xferinfo_callback)(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow)
struct Curl_multi * multi_easy
long server_response_timeout
long rtsp_next_client_CSeq
curl_off_t set_resume_from
char * most_recent_ftp_entrypath
bool http_keep_sending_on_error
bool tunnel_thru_httpproxy
struct curl_slist * postquote
ssl_connect_state connecting_state
curl_xferinfo_callback fxferinfo
#define MAX_SOCKSPEREASYHANDLE
struct Curl_http2_dep * stream_dependents
const struct Curl_handler * handler
struct Curl_multi * multi
CURLcode(* curl_conv_callback)(char *buffer, size_t length)
int(* curl_closesocket_callback)(void *clientp, curl_socket_t item)
struct Curl_dns_entry * dns_entry
bool http_transfer_encoding
struct curl_slist * connect_to
#define CONNECT_BUFFER_SIZE
struct curl_slist * telnet_options
struct curl_slist * headers
curl_conv_callback convtonetwork
struct curl_slist * resolve
curl_fnmatch_callback fnmatch
curl_sshkeycallback ssh_keyfunc
struct gss_name_t_desc_struct * gss_name_t
struct curl_slist * quote
struct curl_hash * hostcache
int(* curl_seek_callback)(void *instream, curl_off_t offset, int origin)
struct Curl_share * share
int(* curl_debug_callback)(CURL *handle, curl_infotype type, char *data, size_t size, void *userptr)
curl_seek_callback seek_func
curl_chunk_end_callback chunk_end
ssl_connection_state state
bool suppress_connect_headers
curl_sockopt_callback fsockopt
struct connectdata * easy_conn
unsigned int conn_protocol
bool http_follow_location
curl_ftpfile ftp_filemethod
curl_closesocket_callback fclosesocket
struct curl_slist * mail_rcpt
bool abstract_unix_socket
struct curl_slist * http200aliases
int(* curl_sockopt_callback)(void *clientp, curl_socket_t curlfd, curlsocktype purpose)
static curl_socket_t sockets[MAX_EASY_HANDLES]
static void negotiate(struct connectdata *)
curl_socket_t(* curl_opensocket_callback)(void *clientp, curlsocktype purpose, struct curl_sockaddr *address)
bool http_disable_hostname_check_before_authentication
CURLcode(* curl_ssl_ctx_callback)(CURL *curl, void *ssl_ctx, void *userptr)
UNITTEST_START struct Curl_easy data
bool is_t_startransfer_set
struct curl_slist * source_postquote
struct http_connect_state * connect_state
curlioerr(* curl_ioctl_callback)(CURL *handle, int cmd, void *clientp)
void * closesocket_client
CURL_TYPEOF_CURL_OFF_T curl_off_t
struct curl_httppost * httppost
struct CookieInfo * cookies
size_t(* curl_read_callback)(char *buffer, size_t size, size_t nitems, void *instream)
curl_ssl_ctx_callback fsslctx
const struct Curl_handler * given
ssize_t( Curl_send)(struct connectdata *conn, int sockindex, const void *buf, size_t len, CURLcode *err)
struct curl_slist * cookielist
curl_conv_callback convfromutf8
static unsigned short port
curl_socket_t writesockfd
curl_ioctl_callback ioctl_func
TFSIMD_FORCE_INLINE const tfScalar & z() const
void * closesocket_client
struct curl_slist * source_quote
unsigned short secondary_port
CURLcode(* Curl_do_more_func)(struct connectdata *, int *)
time_t timeoutms_per_addr
int(* curl_progress_callback)(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
curl_off_t max_send_speed
curl_off_t writebytecount
curl_write_callback fwrite_func
struct curl_slist * proxyheaders
long(* curl_chunk_end_callback)(void *ptr)
size_t(* curl_write_callback)(char *buffer, size_t size, size_t nitems, void *outstream)
unsigned long proxyauthavail
curl_off_t * writebytecountp
CURLcode(* Curl_done_func)(struct connectdata *, CURLcode, bool)
curl_progress_callback fprogress
struct curl_ssl_session * session
curl_closesocket_callback fclosesocket
curl_chunk_bgn_callback chunk_bgn
int(* curl_sshkeycallback)(CURL *easy, const struct curl_khkey *knownkey, const struct curl_khkey *foundkey, enum curl_khmatch, void *clientp)
curl_TimeCond timecondition
curl_read_callback fread_func_set
curl_off_t max_recv_speed
struct curl_slist * resolve
struct connectbundle * bundle
struct Curl_http2_dep * next
curl_off_t crlf_conversions
curl_read_callback fread_func
curl_write_callback fwrite_header
curl_debug_callback fdebug
curl_seek_callback seek_func
struct tftp_state_data * tftpc
long rtsp_next_server_CSeq
unsigned long httpauthavail
struct conncache * conn_cache
long(* curl_chunk_bgn_callback)(const void *transfer_info, void *ptr, int remains)
bool ftp_trying_alternative
curl_conv_callback convfromnetwork
Curl_do_more_func do_more
bool proxy_connect_closed
Dynamicly allocated strings, MUST be freed before this.
int ftp_create_missing_dirs