1
0
mirror of https://github.com/moparisthebest/curl synced 2025-01-10 21:48:10 -05:00

Curl_handler: add 'family' to each protocol

Makes get_protocol_family() faster and it moves the knowledge about the
"families" to each protocol handler, where it belongs.

Closes #5986
This commit is contained in:
Daniel Stenberg 2020-09-21 13:45:24 +02:00
parent 2e645e21de
commit 6434a73984
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
23 changed files with 63 additions and 116 deletions

View File

@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com> * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
@ -79,6 +79,7 @@ const struct Curl_handler Curl_handler_rtmp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_RTMP, /* defport */ PORT_RTMP, /* defport */
CURLPROTO_RTMP, /* protocol */ CURLPROTO_RTMP, /* protocol */
CURLPROTO_RTMP, /* family */
PROTOPT_NONE /* flags*/ PROTOPT_NONE /* flags*/
}; };
@ -100,6 +101,7 @@ const struct Curl_handler Curl_handler_rtmpt = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_RTMPT, /* defport */ PORT_RTMPT, /* defport */
CURLPROTO_RTMPT, /* protocol */ CURLPROTO_RTMPT, /* protocol */
CURLPROTO_RTMPT, /* family */
PROTOPT_NONE /* flags*/ PROTOPT_NONE /* flags*/
}; };
@ -121,6 +123,7 @@ const struct Curl_handler Curl_handler_rtmpe = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_RTMP, /* defport */ PORT_RTMP, /* defport */
CURLPROTO_RTMPE, /* protocol */ CURLPROTO_RTMPE, /* protocol */
CURLPROTO_RTMPE, /* family */
PROTOPT_NONE /* flags*/ PROTOPT_NONE /* flags*/
}; };
@ -142,6 +145,7 @@ const struct Curl_handler Curl_handler_rtmpte = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_RTMPT, /* defport */ PORT_RTMPT, /* defport */
CURLPROTO_RTMPTE, /* protocol */ CURLPROTO_RTMPTE, /* protocol */
CURLPROTO_RTMPTE, /* family */
PROTOPT_NONE /* flags*/ PROTOPT_NONE /* flags*/
}; };
@ -163,6 +167,7 @@ const struct Curl_handler Curl_handler_rtmps = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_RTMPS, /* defport */ PORT_RTMPS, /* defport */
CURLPROTO_RTMPS, /* protocol */ CURLPROTO_RTMPS, /* protocol */
CURLPROTO_RTMP, /* family */
PROTOPT_NONE /* flags*/ PROTOPT_NONE /* flags*/
}; };
@ -184,6 +189,7 @@ const struct Curl_handler Curl_handler_rtmpts = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_RTMPS, /* defport */ PORT_RTMPS, /* defport */
CURLPROTO_RTMPTS, /* protocol */ CURLPROTO_RTMPTS, /* protocol */
CURLPROTO_RTMPT, /* family */
PROTOPT_NONE /* flags*/ PROTOPT_NONE /* flags*/
}; };

View File

@ -90,7 +90,8 @@ const struct Curl_handler Curl_handler_dict = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_DICT, /* defport */ PORT_DICT, /* defport */
CURLPROTO_DICT, /* protocol */ CURLPROTO_DICT, /* protocol */
PROTOPT_NONE | PROTOPT_NOURLQUERY /* flags */ CURLPROTO_DICT, /* family */
PROTOPT_NONE | PROTOPT_NOURLQUERY /* flags */
}; };
static char *unescape_word(struct Curl_easy *data, const char *inputbuff) static char *unescape_word(struct Curl_easy *data, const char *inputbuff)

View File

@ -112,6 +112,7 @@ const struct Curl_handler Curl_handler_file = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
0, /* defport */ 0, /* defport */
CURLPROTO_FILE, /* protocol */ CURLPROTO_FILE, /* protocol */
CURLPROTO_FILE, /* family */
PROTOPT_NONETWORK | PROTOPT_NOURLQUERY /* flags */ PROTOPT_NONETWORK | PROTOPT_NOURLQUERY /* flags */
}; };

View File

@ -170,6 +170,7 @@ const struct Curl_handler Curl_handler_ftp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_FTP, /* defport */ PORT_FTP, /* defport */
CURLPROTO_FTP, /* protocol */ CURLPROTO_FTP, /* protocol */
CURLPROTO_FTP, /* family */
PROTOPT_DUAL | PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD | PROTOPT_DUAL | PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD |
PROTOPT_NOURLQUERY | PROTOPT_PROXY_AS_HTTP | PROTOPT_NOURLQUERY | PROTOPT_PROXY_AS_HTTP |
PROTOPT_WILDCARD /* flags */ PROTOPT_WILDCARD /* flags */
@ -199,6 +200,7 @@ const struct Curl_handler Curl_handler_ftps = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_FTPS, /* defport */ PORT_FTPS, /* defport */
CURLPROTO_FTPS, /* protocol */ CURLPROTO_FTPS, /* protocol */
CURLPROTO_FTP, /* family */
PROTOPT_SSL | PROTOPT_DUAL | PROTOPT_CLOSEACTION | PROTOPT_SSL | PROTOPT_DUAL | PROTOPT_CLOSEACTION |
PROTOPT_NEEDSPWD | PROTOPT_NOURLQUERY | PROTOPT_WILDCARD /* flags */ PROTOPT_NEEDSPWD | PROTOPT_NOURLQUERY | PROTOPT_WILDCARD /* flags */
}; };

View File

@ -71,6 +71,7 @@ const struct Curl_handler Curl_handler_gopher = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_GOPHER, /* defport */ PORT_GOPHER, /* defport */
CURLPROTO_GOPHER, /* protocol */ CURLPROTO_GOPHER, /* protocol */
CURLPROTO_GOPHER, /* family */
PROTOPT_NONE /* flags */ PROTOPT_NONE /* flags */
}; };

View File

@ -125,6 +125,7 @@ const struct Curl_handler Curl_handler_http = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_HTTP, /* defport */ PORT_HTTP, /* defport */
CURLPROTO_HTTP, /* protocol */ CURLPROTO_HTTP, /* protocol */
CURLPROTO_HTTP, /* family */
PROTOPT_CREDSPERREQUEST | /* flags */ PROTOPT_CREDSPERREQUEST | /* flags */
PROTOPT_USERPWDCTRL PROTOPT_USERPWDCTRL
}; };
@ -151,6 +152,7 @@ const struct Curl_handler Curl_handler_https = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_HTTPS, /* defport */ PORT_HTTPS, /* defport */
CURLPROTO_HTTPS, /* protocol */ CURLPROTO_HTTPS, /* protocol */
CURLPROTO_HTTP, /* family */
PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN_NPN | /* flags */ PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN_NPN | /* flags */
PROTOPT_USERPWDCTRL PROTOPT_USERPWDCTRL
}; };

View File

@ -300,6 +300,7 @@ static const struct Curl_handler Curl_handler_http2 = {
http2_conncheck, /* connection_check */ http2_conncheck, /* connection_check */
PORT_HTTP, /* defport */ PORT_HTTP, /* defport */
CURLPROTO_HTTP, /* protocol */ CURLPROTO_HTTP, /* protocol */
CURLPROTO_HTTP, /* family */
PROTOPT_STREAM /* flags */ PROTOPT_STREAM /* flags */
}; };
@ -321,6 +322,7 @@ static const struct Curl_handler Curl_handler_http2_ssl = {
http2_conncheck, /* connection_check */ http2_conncheck, /* connection_check */
PORT_HTTP, /* defport */ PORT_HTTP, /* defport */
CURLPROTO_HTTPS, /* protocol */ CURLPROTO_HTTPS, /* protocol */
CURLPROTO_HTTP, /* family */
PROTOPT_SSL | PROTOPT_STREAM /* flags */ PROTOPT_SSL | PROTOPT_STREAM /* flags */
}; };

View File

@ -132,6 +132,7 @@ const struct Curl_handler Curl_handler_imap = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_IMAP, /* defport */ PORT_IMAP, /* defport */
CURLPROTO_IMAP, /* protocol */ CURLPROTO_IMAP, /* protocol */
CURLPROTO_IMAP, /* family */
PROTOPT_CLOSEACTION| /* flags */ PROTOPT_CLOSEACTION| /* flags */
PROTOPT_URLOPTIONS PROTOPT_URLOPTIONS
}; };
@ -159,6 +160,7 @@ const struct Curl_handler Curl_handler_imaps = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_IMAPS, /* defport */ PORT_IMAPS, /* defport */
CURLPROTO_IMAPS, /* protocol */ CURLPROTO_IMAPS, /* protocol */
CURLPROTO_IMAP, /* family */
PROTOPT_CLOSEACTION | PROTOPT_SSL | /* flags */ PROTOPT_CLOSEACTION | PROTOPT_SSL | /* flags */
PROTOPT_URLOPTIONS PROTOPT_URLOPTIONS
}; };

View File

@ -150,6 +150,7 @@ const struct Curl_handler Curl_handler_ldap = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_LDAP, /* defport */ PORT_LDAP, /* defport */
CURLPROTO_LDAP, /* protocol */ CURLPROTO_LDAP, /* protocol */
CURLPROTO_LDAP, /* family */
PROTOPT_NONE /* flags */ PROTOPT_NONE /* flags */
}; };
@ -176,6 +177,7 @@ const struct Curl_handler Curl_handler_ldaps = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_LDAPS, /* defport */ PORT_LDAPS, /* defport */
CURLPROTO_LDAPS, /* protocol */ CURLPROTO_LDAPS, /* protocol */
CURLPROTO_LDAP, /* family */
PROTOPT_SSL /* flags */ PROTOPT_SSL /* flags */
}; };
#endif #endif

View File

@ -86,6 +86,7 @@ const struct Curl_handler Curl_handler_mqtt = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_MQTT, /* defport */ PORT_MQTT, /* defport */
CURLPROTO_MQTT, /* protocol */ CURLPROTO_MQTT, /* protocol */
CURLPROTO_MQTT, /* family */
PROTOPT_NONE /* flags */ PROTOPT_NONE /* flags */
}; };

View File

@ -107,6 +107,7 @@ const struct Curl_handler Curl_handler_ldap = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_LDAP, /* defport */ PORT_LDAP, /* defport */
CURLPROTO_LDAP, /* protocol */ CURLPROTO_LDAP, /* protocol */
CURLPROTO_LDAP, /* family */
PROTOPT_NONE /* flags */ PROTOPT_NONE /* flags */
}; };
@ -132,7 +133,8 @@ const struct Curl_handler Curl_handler_ldaps = {
ZERO_NULL, /* readwrite */ ZERO_NULL, /* readwrite */
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_LDAPS, /* defport */ PORT_LDAPS, /* defport */
CURLPROTO_LDAP, /* protocol */ CURLPROTO_LDAPS, /* protocol */
CURLPROTO_LDAP, /* family */
PROTOPT_SSL /* flags */ PROTOPT_SSL /* flags */
}; };
#endif #endif

View File

@ -128,6 +128,7 @@ const struct Curl_handler Curl_handler_pop3 = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_POP3, /* defport */ PORT_POP3, /* defport */
CURLPROTO_POP3, /* protocol */ CURLPROTO_POP3, /* protocol */
CURLPROTO_POP3, /* family */
PROTOPT_CLOSEACTION | PROTOPT_NOURLQUERY | /* flags */ PROTOPT_CLOSEACTION | PROTOPT_NOURLQUERY | /* flags */
PROTOPT_URLOPTIONS PROTOPT_URLOPTIONS
}; };
@ -155,6 +156,7 @@ const struct Curl_handler Curl_handler_pop3s = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_POP3S, /* defport */ PORT_POP3S, /* defport */
CURLPROTO_POP3S, /* protocol */ CURLPROTO_POP3S, /* protocol */
CURLPROTO_POP3, /* family */
PROTOPT_CLOSEACTION | PROTOPT_SSL PROTOPT_CLOSEACTION | PROTOPT_SSL
| PROTOPT_NOURLQUERY | PROTOPT_URLOPTIONS /* flags */ | PROTOPT_NOURLQUERY | PROTOPT_URLOPTIONS /* flags */
}; };

View File

@ -106,6 +106,7 @@ const struct Curl_handler Curl_handler_rtsp = {
rtsp_conncheck, /* connection_check */ rtsp_conncheck, /* connection_check */
PORT_RTSP, /* defport */ PORT_RTSP, /* defport */
CURLPROTO_RTSP, /* protocol */ CURLPROTO_RTSP, /* protocol */
CURLPROTO_RTSP, /* family */
PROTOPT_NONE /* flags */ PROTOPT_NONE /* flags */
}; };

View File

@ -86,6 +86,7 @@ const struct Curl_handler Curl_handler_smb = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SMB, /* defport */ PORT_SMB, /* defport */
CURLPROTO_SMB, /* protocol */ CURLPROTO_SMB, /* protocol */
CURLPROTO_SMB, /* family */
PROTOPT_NONE /* flags */ PROTOPT_NONE /* flags */
}; };
@ -111,6 +112,7 @@ const struct Curl_handler Curl_handler_smbs = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SMBS, /* defport */ PORT_SMBS, /* defport */
CURLPROTO_SMBS, /* protocol */ CURLPROTO_SMBS, /* protocol */
CURLPROTO_SMB, /* family */
PROTOPT_SSL /* flags */ PROTOPT_SSL /* flags */
}; };
#endif #endif

View File

@ -133,6 +133,7 @@ const struct Curl_handler Curl_handler_smtp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SMTP, /* defport */ PORT_SMTP, /* defport */
CURLPROTO_SMTP, /* protocol */ CURLPROTO_SMTP, /* protocol */
CURLPROTO_SMTP, /* family */
PROTOPT_CLOSEACTION | PROTOPT_NOURLQUERY | /* flags */ PROTOPT_CLOSEACTION | PROTOPT_NOURLQUERY | /* flags */
PROTOPT_URLOPTIONS PROTOPT_URLOPTIONS
}; };
@ -160,6 +161,7 @@ const struct Curl_handler Curl_handler_smtps = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SMTPS, /* defport */ PORT_SMTPS, /* defport */
CURLPROTO_SMTPS, /* protocol */ CURLPROTO_SMTPS, /* protocol */
CURLPROTO_SMTP, /* family */
PROTOPT_CLOSEACTION | PROTOPT_SSL PROTOPT_CLOSEACTION | PROTOPT_SSL
| PROTOPT_NOURLQUERY | PROTOPT_URLOPTIONS /* flags */ | PROTOPT_NOURLQUERY | PROTOPT_URLOPTIONS /* flags */
}; };

View File

@ -188,6 +188,7 @@ const struct Curl_handler Curl_handler_telnet = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_TELNET, /* defport */ PORT_TELNET, /* defport */
CURLPROTO_TELNET, /* protocol */ CURLPROTO_TELNET, /* protocol */
CURLPROTO_TELNET, /* family */
PROTOPT_NONE | PROTOPT_NOURLQUERY /* flags */ PROTOPT_NONE | PROTOPT_NOURLQUERY /* flags */
}; };

View File

@ -183,6 +183,7 @@ const struct Curl_handler Curl_handler_tftp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_TFTP, /* defport */ PORT_TFTP, /* defport */
CURLPROTO_TFTP, /* protocol */ CURLPROTO_TFTP, /* protocol */
CURLPROTO_TFTP, /* family */
PROTOPT_NONE | PROTOPT_NOURLQUERY /* flags */ PROTOPT_NONE | PROTOPT_NOURLQUERY /* flags */
}; };

134
lib/url.c
View File

@ -130,7 +130,6 @@ bool curl_win32_idn_to_ascii(const char *in, char **out);
#include "memdebug.h" #include "memdebug.h"
static void conn_free(struct connectdata *conn); static void conn_free(struct connectdata *conn);
static unsigned int get_protocol_family(unsigned int protocol);
/* Some parts of the code (e.g. chunked encoding) assume this buffer has at /* Some parts of the code (e.g. chunked encoding) assume this buffer has at
* more than just a few bytes to play with. Don't let it become too small or * more than just a few bytes to play with. Don't let it become too small or
@ -140,6 +139,24 @@ static unsigned int get_protocol_family(unsigned int protocol);
# error READBUFFER_SIZE is too small # error READBUFFER_SIZE is too small
#endif #endif
/*
* get_protocol_family()
*
* This is used to return the protocol family for a given protocol.
*
* Parameters:
*
* 'h' [in] - struct Curl_handler pointer.
*
* Returns the family as a single bit protocol identifier.
*/
static unsigned int get_protocol_family(const struct Curl_handler *h)
{
DEBUGASSERT(h);
DEBUGASSERT(h->family);
return h->family;
}
/* /*
* Protocol table. Schemes (roughly) in 2019 popularity order: * Protocol table. Schemes (roughly) in 2019 popularity order:
@ -273,6 +290,7 @@ static const struct Curl_handler Curl_handler_dummy = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
0, /* defport */ 0, /* defport */
0, /* protocol */ 0, /* protocol */
0, /* family */
PROTOPT_NONE /* flags */ PROTOPT_NONE /* flags */
}; };
@ -1173,7 +1191,7 @@ ConnectionExists(struct Curl_easy *data,
if((needle->handler->flags&PROTOPT_SSL) != if((needle->handler->flags&PROTOPT_SSL) !=
(check->handler->flags&PROTOPT_SSL)) (check->handler->flags&PROTOPT_SSL))
/* don't do mixed SSL and non-SSL connections */ /* don't do mixed SSL and non-SSL connections */
if(get_protocol_family(check->handler->protocol) != if(get_protocol_family(check->handler) !=
needle->handler->protocol || !check->bits.tls_upgraded) needle->handler->protocol || !check->bits.tls_upgraded)
/* except protocols that have been upgraded via TLS */ /* except protocols that have been upgraded via TLS */
continue; continue;
@ -1278,7 +1296,7 @@ ConnectionExists(struct Curl_easy *data,
is allowed to be upgraded via TLS */ is allowed to be upgraded via TLS */
if((strcasecompare(needle->handler->scheme, check->handler->scheme) || if((strcasecompare(needle->handler->scheme, check->handler->scheme) ||
(get_protocol_family(check->handler->protocol) == (get_protocol_family(check->handler) ==
needle->handler->protocol && check->bits.tls_upgraded)) && needle->handler->protocol && check->bits.tls_upgraded)) &&
(!needle->bits.conn_to_host || strcasecompare( (!needle->bits.conn_to_host || strcasecompare(
needle->conn_to_host.name, check->conn_to_host.name)) && needle->conn_to_host.name, check->conn_to_host.name)) &&
@ -4028,113 +4046,3 @@ CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn)
return CURLE_OK; return CURLE_OK;
} }
/*
* get_protocol_family()
*
* This is used to return the protocol family for a given protocol.
*
* Parameters:
*
* protocol [in] - A single bit protocol identifier such as HTTP or HTTPS.
*
* Returns the family as a single bit protocol identifier.
*/
static unsigned int get_protocol_family(unsigned int protocol)
{
unsigned int family;
switch(protocol) {
case CURLPROTO_HTTP:
case CURLPROTO_HTTPS:
family = CURLPROTO_HTTP;
break;
case CURLPROTO_FTP:
case CURLPROTO_FTPS:
family = CURLPROTO_FTP;
break;
case CURLPROTO_SCP:
family = CURLPROTO_SCP;
break;
case CURLPROTO_SFTP:
family = CURLPROTO_SFTP;
break;
case CURLPROTO_TELNET:
family = CURLPROTO_TELNET;
break;
case CURLPROTO_LDAP:
case CURLPROTO_LDAPS:
family = CURLPROTO_LDAP;
break;
case CURLPROTO_DICT:
family = CURLPROTO_DICT;
break;
case CURLPROTO_FILE:
family = CURLPROTO_FILE;
break;
case CURLPROTO_TFTP:
family = CURLPROTO_TFTP;
break;
case CURLPROTO_IMAP:
case CURLPROTO_IMAPS:
family = CURLPROTO_IMAP;
break;
case CURLPROTO_POP3:
case CURLPROTO_POP3S:
family = CURLPROTO_POP3;
break;
case CURLPROTO_SMTP:
case CURLPROTO_SMTPS:
family = CURLPROTO_SMTP;
break;
case CURLPROTO_RTSP:
family = CURLPROTO_RTSP;
break;
case CURLPROTO_RTMP:
case CURLPROTO_RTMPS:
family = CURLPROTO_RTMP;
break;
case CURLPROTO_RTMPT:
case CURLPROTO_RTMPTS:
family = CURLPROTO_RTMPT;
break;
case CURLPROTO_RTMPE:
family = CURLPROTO_RTMPE;
break;
case CURLPROTO_RTMPTE:
family = CURLPROTO_RTMPTE;
break;
case CURLPROTO_GOPHER:
family = CURLPROTO_GOPHER;
break;
case CURLPROTO_SMB:
case CURLPROTO_SMBS:
family = CURLPROTO_SMB;
break;
default:
family = 0;
break;
}
return family;
}

View File

@ -739,6 +739,8 @@ struct Curl_handler {
long defport; /* Default port. */ long defport; /* Default port. */
unsigned int protocol; /* See CURLPROTO_* - this needs to be the single unsigned int protocol; /* See CURLPROTO_* - this needs to be the single
specific protocol bit */ specific protocol bit */
unsigned int family; /* single bit for protocol family; basically the
non-TLS name of the protocol this is */
unsigned int flags; /* Extra particular characteristics, see PROTOPT_* */ unsigned int flags; /* Extra particular characteristics, see PROTOPT_* */
}; };

View File

@ -954,6 +954,7 @@ static const struct Curl_handler Curl_handler_http3 = {
ng_conncheck, /* connection_check */ ng_conncheck, /* connection_check */
PORT_HTTP, /* defport */ PORT_HTTP, /* defport */
CURLPROTO_HTTPS, /* protocol */ CURLPROTO_HTTPS, /* protocol */
CURLPROTO_HTTP, /* family */
PROTOPT_SSL | PROTOPT_STREAM /* flags */ PROTOPT_SSL | PROTOPT_STREAM /* flags */
}; };

View File

@ -154,6 +154,7 @@ static const struct Curl_handler Curl_handler_http3 = {
quiche_conncheck, /* connection_check */ quiche_conncheck, /* connection_check */
PORT_HTTP, /* defport */ PORT_HTTP, /* defport */
CURLPROTO_HTTPS, /* protocol */ CURLPROTO_HTTPS, /* protocol */
CURLPROTO_HTTP, /* family */
PROTOPT_SSL | PROTOPT_STREAM /* flags */ PROTOPT_SSL | PROTOPT_STREAM /* flags */
}; };

View File

@ -158,6 +158,7 @@ const struct Curl_handler Curl_handler_scp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SSH, /* defport */ PORT_SSH, /* defport */
CURLPROTO_SCP, /* protocol */ CURLPROTO_SCP, /* protocol */
CURLPROTO_SCP, /* family */
PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION | PROTOPT_NOURLQUERY /* flags */ PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION | PROTOPT_NOURLQUERY /* flags */
}; };
@ -183,6 +184,7 @@ const struct Curl_handler Curl_handler_sftp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SSH, /* defport */ PORT_SSH, /* defport */
CURLPROTO_SFTP, /* protocol */ CURLPROTO_SFTP, /* protocol */
CURLPROTO_SFTP, /* family */
PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION
| PROTOPT_NOURLQUERY /* flags */ | PROTOPT_NOURLQUERY /* flags */
}; };

View File

@ -150,6 +150,7 @@ const struct Curl_handler Curl_handler_scp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SSH, /* defport */ PORT_SSH, /* defport */
CURLPROTO_SCP, /* protocol */ CURLPROTO_SCP, /* protocol */
CURLPROTO_SCP, /* family */
PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION
| PROTOPT_NOURLQUERY /* flags */ | PROTOPT_NOURLQUERY /* flags */
}; };
@ -177,6 +178,7 @@ const struct Curl_handler Curl_handler_sftp = {
ZERO_NULL, /* connection_check */ ZERO_NULL, /* connection_check */
PORT_SSH, /* defport */ PORT_SSH, /* defport */
CURLPROTO_SFTP, /* protocol */ CURLPROTO_SFTP, /* protocol */
CURLPROTO_SFTP, /* family */
PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION PROTOPT_DIRLOCK | PROTOPT_CLOSEACTION
| PROTOPT_NOURLQUERY /* flags */ | PROTOPT_NOURLQUERY /* flags */
}; };