diff options
author | Daniel Stenberg <daniel@haxx.se> | 2014-04-20 19:37:54 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2014-04-23 22:36:01 +0200 |
commit | 710f14edba4491a4ac9222a7e3103b51fd30dbe0 (patch) | |
tree | 18b564248ec40eb30d030a8e246b3ecda3715ce6 /lib/urldata.h | |
parent | cf9342e275b784f5a6006f833b33b40043f228d4 (diff) |
handler: make 'protocol' always specified as a single bit
This makes the findprotocol() function work as intended so that libcurl
can properly be restricted to not support HTTP while still supporting
HTTPS - since the HTTPS handler previously set both the HTTP and HTTPS
bits in the protocol field.
This fixes --proto and --proto-redir for most SSL protocols.
This is done by adding a few new convenience defines that groups HTTP
and HTTPS, FTP and FTPS etc that should then be used when the code wants
to check for both protocols at once. PROTO_FAMILY_[protocol] style.
Bug: https://github.com/bagder/curl/pull/97
Reported-by: drizzt
Diffstat (limited to 'lib/urldata.h')
-rw-r--r-- | lib/urldata.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/urldata.h b/lib/urldata.h index ec48f6525..16f08d30e 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -58,6 +58,14 @@ #define CURL_DEFAULT_USER "anonymous" #define CURL_DEFAULT_PASSWORD "ftp@example.com" +/* Convenience defines for checking protocols or their SSL based version. Each + protocol handler should only ever have a single CURLPROTO_ in its protocol + field. */ +#define PROTO_FAMILY_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS) +#define PROTO_FAMILY_FTP (CURLPROTO_FTP|CURLPROTO_FTPS) +#define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S) +#define PROTO_FAMILY_SMTP (CURLPROTO_SMTP|CURLPROTO_SMTPS) + #define DEFAULT_CONNCACHE_SIZE 5 /* length of longest IPv6 address string including the trailing null */ @@ -778,7 +786,8 @@ struct Curl_handler { ssize_t *nread, bool *readmore); long defport; /* Default port. */ - unsigned int protocol; /* See CURLPROTO_* */ + unsigned int protocol; /* See CURLPROTO_* - this needs to be the single + specific protocol bit */ unsigned int flags; /* Extra particular characteristics, see PROTOPT_* */ }; |