mirror of
https://github.com/curl/curl.git
synced 2025-01-30 14:22:33 +08:00
parent
0768604196
commit
8e85764b7b
22
lib/bufq.c
22
lib/bufq.c
@ -181,7 +181,7 @@ void Curl_bufcp_init(struct bufc_pool *pool,
|
||||
pool->spare_max = spare_max;
|
||||
}
|
||||
|
||||
CURLcode Curl_bufcp_take(struct bufc_pool *pool,
|
||||
static CURLcode bufcp_take(struct bufc_pool *pool,
|
||||
struct buf_chunk **pchunk)
|
||||
{
|
||||
struct buf_chunk *chunk = NULL;
|
||||
@ -205,7 +205,7 @@ CURLcode Curl_bufcp_take(struct bufc_pool *pool,
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
void Curl_bufcp_put(struct bufc_pool *pool,
|
||||
static void bufcp_put(struct bufc_pool *pool,
|
||||
struct buf_chunk *chunk)
|
||||
{
|
||||
if(pool->spare_count >= pool->spare_max) {
|
||||
@ -335,7 +335,7 @@ static struct buf_chunk *get_spare(struct bufq *q)
|
||||
return NULL;
|
||||
|
||||
if(q->pool) {
|
||||
if(Curl_bufcp_take(q->pool, &chunk))
|
||||
if(bufcp_take(q->pool, &chunk))
|
||||
return NULL;
|
||||
++q->chunk_count;
|
||||
return chunk;
|
||||
@ -360,7 +360,7 @@ static void prune_head(struct bufq *q)
|
||||
if(q->tail == chunk)
|
||||
q->tail = q->head;
|
||||
if(q->pool) {
|
||||
Curl_bufcp_put(q->pool, chunk);
|
||||
bufcp_put(q->pool, chunk);
|
||||
--q->chunk_count;
|
||||
}
|
||||
else if((q->chunk_count > q->max_chunks) ||
|
||||
@ -605,7 +605,16 @@ ssize_t Curl_bufq_sipn(struct bufq *q, size_t max_len,
|
||||
return nread;
|
||||
}
|
||||
|
||||
ssize_t Curl_bufq_slurpn(struct bufq *q, size_t max_len,
|
||||
/**
|
||||
* Read up to `max_len` bytes and append it to the end of the buffer queue.
|
||||
* if `max_len` is 0, no limit is imposed and the call behaves exactly
|
||||
* the same as `Curl_bufq_slurp()`.
|
||||
* Returns the total amount of buf read (may be 0) or -1 on other
|
||||
* reader errors.
|
||||
* Note that even in case of a -1 chunks may have been read and
|
||||
* the buffer queue will have different length than before.
|
||||
*/
|
||||
static ssize_t bufq_slurpn(struct bufq *q, size_t max_len,
|
||||
Curl_bufq_reader *reader, void *reader_ctx,
|
||||
CURLcode *err)
|
||||
{
|
||||
@ -646,6 +655,5 @@ ssize_t Curl_bufq_slurpn(struct bufq *q, size_t max_len,
|
||||
ssize_t Curl_bufq_slurp(struct bufq *q, Curl_bufq_reader *reader,
|
||||
void *reader_ctx, CURLcode *err)
|
||||
{
|
||||
return Curl_bufq_slurpn(q, 0, reader, reader_ctx, err);
|
||||
return bufq_slurpn(q, 0, reader, reader_ctx, err);
|
||||
}
|
||||
|
||||
|
18
lib/bufq.h
18
lib/bufq.h
@ -60,11 +60,6 @@ struct bufc_pool {
|
||||
void Curl_bufcp_init(struct bufc_pool *pool,
|
||||
size_t chunk_size, size_t spare_max);
|
||||
|
||||
CURLcode Curl_bufcp_take(struct bufc_pool *pool,
|
||||
struct buf_chunk **pchunk);
|
||||
void Curl_bufcp_put(struct bufc_pool *pool,
|
||||
struct buf_chunk *chunk);
|
||||
|
||||
void Curl_bufcp_free(struct bufc_pool *pool);
|
||||
|
||||
/**
|
||||
@ -251,19 +246,6 @@ typedef ssize_t Curl_bufq_reader(void *reader_ctx,
|
||||
ssize_t Curl_bufq_slurp(struct bufq *q, Curl_bufq_reader *reader,
|
||||
void *reader_ctx, CURLcode *err);
|
||||
|
||||
/**
|
||||
* Read up to `max_len` bytes and append it to the end of the buffer queue.
|
||||
* if `max_len` is 0, no limit is imposed and the call behaves exactly
|
||||
* the same as `Curl_bufq_slurp()`.
|
||||
* Returns the total amount of buf read (may be 0) or -1 on other
|
||||
* reader errors.
|
||||
* Note that even in case of a -1 chunks may have been read and
|
||||
* the buffer queue will have different length than before.
|
||||
*/
|
||||
ssize_t Curl_bufq_slurpn(struct bufq *q, size_t max_len,
|
||||
Curl_bufq_reader *reader, void *reader_ctx,
|
||||
CURLcode *err);
|
||||
|
||||
/**
|
||||
* Read *once* up to `max_len` bytes and append it to the buffer.
|
||||
* if `max_len` is 0, no limit is imposed besides the chunk space.
|
||||
|
@ -228,22 +228,6 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_conn_haproxy_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex)
|
||||
{
|
||||
struct Curl_cfilter *cf;
|
||||
CURLcode result;
|
||||
|
||||
result = cf_haproxy_create(&cf, data);
|
||||
if(result)
|
||||
goto out;
|
||||
Curl_conn_cf_add(data, conn, sockindex, cf);
|
||||
|
||||
out:
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_cf_haproxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data)
|
||||
{
|
||||
|
@ -29,10 +29,6 @@
|
||||
|
||||
#if !defined(CURL_DISABLE_PROXY)
|
||||
|
||||
CURLcode Curl_conn_haproxy_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex);
|
||||
|
||||
CURLcode Curl_cf_haproxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data);
|
||||
|
||||
|
@ -496,7 +496,7 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_cf_http_connect_add(struct Curl_easy *data,
|
||||
static CURLcode cf_http_connect_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
@ -514,24 +514,6 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode
|
||||
Curl_cf_http_connect_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
bool try_h3, bool try_h21)
|
||||
{
|
||||
struct Curl_cfilter *cf;
|
||||
CURLcode result;
|
||||
|
||||
DEBUGASSERT(data);
|
||||
result = cf_hc_create(&cf, data, remotehost, try_h3, try_h21);
|
||||
if(result)
|
||||
goto out;
|
||||
Curl_conn_cf_insert_after(cf_at, cf);
|
||||
out:
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_cf_https_setup(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex,
|
||||
@ -560,7 +542,7 @@ CURLcode Curl_cf_https_setup(struct Curl_easy *data,
|
||||
try_h21 = TRUE;
|
||||
}
|
||||
|
||||
result = Curl_cf_http_connect_add(data, conn, sockindex, remotehost,
|
||||
result = cf_http_connect_add(data, conn, sockindex, remotehost,
|
||||
try_h3, try_h21);
|
||||
out:
|
||||
return result;
|
||||
|
@ -212,7 +212,11 @@ tcpkeepalive(struct Curl_easy *data,
|
||||
}
|
||||
}
|
||||
|
||||
void Curl_sock_assign_addr(struct Curl_sockaddr_ex *dest,
|
||||
/**
|
||||
* Assign the address `ai` to the Curl_sockaddr_ex `dest` and
|
||||
* set the transport used.
|
||||
*/
|
||||
static void sock_assign_addr(struct Curl_sockaddr_ex *dest,
|
||||
const struct Curl_addrinfo *ai,
|
||||
int transport)
|
||||
{
|
||||
@ -306,7 +310,7 @@ CURLcode Curl_socket_open(struct Curl_easy *data,
|
||||
/* if the caller doesn't want info back, use a local temp copy */
|
||||
addr = &dummy;
|
||||
|
||||
Curl_sock_assign_addr(addr, ai, transport);
|
||||
sock_assign_addr(addr, ai, transport);
|
||||
return socket_open(data, addr, sockfd);
|
||||
}
|
||||
|
||||
@ -717,7 +721,10 @@ static bool verifyconnect(curl_socket_t sockfd, int *error)
|
||||
return rc;
|
||||
}
|
||||
|
||||
CURLcode Curl_socket_connect_result(struct Curl_easy *data,
|
||||
/**
|
||||
* Determine the curl code for a socket connect() == -1 with errno.
|
||||
*/
|
||||
static CURLcode socket_connect_result(struct Curl_easy *data,
|
||||
const char *ipaddress, int error)
|
||||
{
|
||||
char buffer[STRERROR_LEN];
|
||||
@ -781,7 +788,7 @@ static void cf_socket_ctx_init(struct cf_socket_ctx *ctx,
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
ctx->sock = CURL_SOCKET_BAD;
|
||||
ctx->transport = transport;
|
||||
Curl_sock_assign_addr(&ctx->addr, ai, transport);
|
||||
sock_assign_addr(&ctx->addr, ai, transport);
|
||||
Curl_bufq_init(&ctx->recvbuf, NW_RECV_CHUNK_SIZE, NW_RECV_CHUNKS);
|
||||
}
|
||||
|
||||
@ -1128,7 +1135,7 @@ static CURLcode cf_tcp_connect(struct Curl_cfilter *cf,
|
||||
/* Connect TCP socket */
|
||||
rc = do_connect(cf, data, cf->conn->bits.tcp_fastopen);
|
||||
if(-1 == rc) {
|
||||
result = Curl_socket_connect_result(data, ctx->r_ip, SOCKERRNO);
|
||||
result = socket_connect_result(data, ctx->r_ip, SOCKERRNO);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@ -1562,7 +1569,7 @@ static CURLcode cf_udp_setup_quic(struct Curl_cfilter *cf,
|
||||
|
||||
rc = connect(ctx->sock, &ctx->addr.sa_addr, ctx->addr.addrlen);
|
||||
if(-1 == rc) {
|
||||
return Curl_socket_connect_result(data, ctx->r_ip, SOCKERRNO);
|
||||
return socket_connect_result(data, ctx->r_ip, SOCKERRNO);
|
||||
}
|
||||
set_local_ip(cf, data);
|
||||
DEBUGF(LOG_CF(data, cf, "%s socket %" CURL_FORMAT_SOCKET_T
|
||||
@ -1866,7 +1873,10 @@ CURLcode Curl_conn_tcp_accepted_set(struct Curl_easy *data,
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
bool Curl_cf_is_socket(struct Curl_cfilter *cf)
|
||||
/**
|
||||
* Return TRUE iff `cf` is a socket filter.
|
||||
*/
|
||||
static bool cf_is_socket(struct Curl_cfilter *cf)
|
||||
{
|
||||
return cf && (cf->cft == &Curl_cft_tcp ||
|
||||
cf->cft == &Curl_cft_udp ||
|
||||
@ -1881,7 +1891,7 @@ CURLcode Curl_cf_socket_peek(struct Curl_cfilter *cf,
|
||||
const char **pr_ip_str, int *pr_port,
|
||||
const char **pl_ip_str, int *pl_port)
|
||||
{
|
||||
if(Curl_cf_is_socket(cf) && cf->ctx) {
|
||||
if(cf_is_socket(cf) && cf->ctx) {
|
||||
struct cf_socket_ctx *ctx = cf->ctx;
|
||||
|
||||
if(psock)
|
||||
|
@ -87,12 +87,6 @@ CURLcode Curl_socket_open(struct Curl_easy *data,
|
||||
int Curl_socket_close(struct Curl_easy *data, struct connectdata *conn,
|
||||
curl_socket_t sock);
|
||||
|
||||
/**
|
||||
* Determine the curl code for a socket connect() == -1 with errno.
|
||||
*/
|
||||
CURLcode Curl_socket_connect_result(struct Curl_easy *data,
|
||||
const char *ipaddress, int error);
|
||||
|
||||
#ifdef USE_WINSOCK
|
||||
/* When you run a program that uses the Windows Sockets API, you may
|
||||
experience slow performance when you copy data to a TCP server.
|
||||
@ -108,13 +102,6 @@ void Curl_sndbufset(curl_socket_t sockfd);
|
||||
#define Curl_sndbufset(y) Curl_nop_stmt
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Assign the address `ai` to the Curl_sockaddr_ex `dest` and
|
||||
* set the transport used.
|
||||
*/
|
||||
void Curl_sock_assign_addr(struct Curl_sockaddr_ex *dest,
|
||||
const struct Curl_addrinfo *ai,
|
||||
int transport);
|
||||
|
||||
/**
|
||||
* Creates a cfilter that opens a TCP socket to the given address
|
||||
@ -171,11 +158,6 @@ CURLcode Curl_conn_tcp_accepted_set(struct Curl_easy *data,
|
||||
int sockindex,
|
||||
curl_socket_t *s);
|
||||
|
||||
/**
|
||||
* Return TRUE iff `cf` is a socket filter.
|
||||
*/
|
||||
bool Curl_cf_is_socket(struct Curl_cfilter *cf);
|
||||
|
||||
/**
|
||||
* Peek at the socket and remote ip/port the socket filter is using.
|
||||
* The filter owns all returned values.
|
||||
|
@ -44,40 +44,18 @@
|
||||
#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
|
||||
#endif
|
||||
|
||||
|
||||
void Curl_cf_def_destroy_this(struct Curl_cfilter *cf, struct Curl_easy *data)
|
||||
{
|
||||
(void)cf;
|
||||
(void)data;
|
||||
}
|
||||
|
||||
#ifdef DEBUGBUILD
|
||||
/* used by unit2600.c */
|
||||
void Curl_cf_def_close(struct Curl_cfilter *cf, struct Curl_easy *data)
|
||||
{
|
||||
cf->connected = FALSE;
|
||||
if(cf->next)
|
||||
cf->next->cft->close(cf->next, data);
|
||||
}
|
||||
#endif
|
||||
|
||||
CURLcode Curl_cf_def_connect(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
bool blocking, bool *done)
|
||||
{
|
||||
CURLcode result;
|
||||
|
||||
if(cf->connected) {
|
||||
*done = TRUE;
|
||||
return CURLE_OK;
|
||||
}
|
||||
if(cf->next) {
|
||||
result = cf->next->cft->connect(cf->next, data, blocking, done);
|
||||
if(!result && *done) {
|
||||
cf->connected = TRUE;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
*done = FALSE;
|
||||
return CURLE_FAILED_INIT;
|
||||
}
|
||||
static void conn_report_connect_stats(struct Curl_easy *data,
|
||||
struct connectdata *conn);
|
||||
|
||||
void Curl_cf_def_get_host(struct Curl_cfilter *cf, struct Curl_easy *data,
|
||||
const char **phost, const char **pdisplay_host,
|
||||
@ -334,14 +312,6 @@ int Curl_conn_cf_get_select_socks(struct Curl_cfilter *cf,
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool Curl_conn_cf_data_pending(struct Curl_cfilter *cf,
|
||||
const struct Curl_easy *data)
|
||||
{
|
||||
if(cf)
|
||||
return cf->cft->has_data_pending(cf, data);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ssize_t Curl_conn_cf_send(struct Curl_cfilter *cf, struct Curl_easy *data,
|
||||
const void *buf, size_t len, CURLcode *err)
|
||||
{
|
||||
@ -381,11 +351,11 @@ CURLcode Curl_conn_connect(struct Curl_easy *data,
|
||||
result = cf->cft->connect(cf, data, blocking, done);
|
||||
if(!result && *done) {
|
||||
Curl_conn_ev_update_info(data, data->conn);
|
||||
Curl_conn_report_connect_stats(data, data->conn);
|
||||
conn_report_connect_stats(data, data->conn);
|
||||
data->conn->keepalive = Curl_now();
|
||||
}
|
||||
else if(result) {
|
||||
Curl_conn_report_connect_stats(data, data->conn);
|
||||
conn_report_connect_stats(data, data->conn);
|
||||
}
|
||||
}
|
||||
|
||||
@ -625,7 +595,10 @@ void Curl_conn_ev_update_info(struct Curl_easy *data,
|
||||
cf_cntrl_all(conn, data, TRUE, CF_CTRL_CONN_INFO_UPDATE, 0, NULL);
|
||||
}
|
||||
|
||||
void Curl_conn_report_connect_stats(struct Curl_easy *data,
|
||||
/**
|
||||
* Update connection statistics
|
||||
*/
|
||||
static void conn_report_connect_stats(struct Curl_easy *data,
|
||||
struct connectdata *conn)
|
||||
{
|
||||
struct Curl_cfilter *cf = conn->cfilter[FIRSTSOCKET];
|
||||
|
@ -197,10 +197,6 @@ void Curl_cf_def_destroy_this(struct Curl_cfilter *cf,
|
||||
|
||||
/* Default implementations for the type functions, implementing pass-through
|
||||
* the filter chain. */
|
||||
void Curl_cf_def_close(struct Curl_cfilter *cf, struct Curl_easy *data);
|
||||
CURLcode Curl_cf_def_connect(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
bool blocking, bool *done);
|
||||
void Curl_cf_def_get_host(struct Curl_cfilter *cf, struct Curl_easy *data,
|
||||
const char **phost, const char **pdisplay_host,
|
||||
int *pport);
|
||||
@ -286,8 +282,6 @@ void Curl_conn_cf_close(struct Curl_cfilter *cf, struct Curl_easy *data);
|
||||
int Curl_conn_cf_get_select_socks(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
curl_socket_t *socks);
|
||||
bool Curl_conn_cf_data_pending(struct Curl_cfilter *cf,
|
||||
const struct Curl_easy *data);
|
||||
ssize_t Curl_conn_cf_send(struct Curl_cfilter *cf, struct Curl_easy *data,
|
||||
const void *buf, size_t len, CURLcode *err);
|
||||
ssize_t Curl_conn_cf_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
|
||||
@ -447,12 +441,6 @@ CURLcode Curl_conn_ev_data_pause(struct Curl_easy *data, bool do_pause);
|
||||
void Curl_conn_ev_update_info(struct Curl_easy *data,
|
||||
struct connectdata *conn);
|
||||
|
||||
/**
|
||||
* Update connection statistics
|
||||
*/
|
||||
void Curl_conn_report_connect_stats(struct Curl_easy *data,
|
||||
struct connectdata *conn);
|
||||
|
||||
/**
|
||||
* Check if FIRSTSOCKET's cfilter chain deems connection alive.
|
||||
*/
|
||||
@ -466,6 +454,7 @@ CURLcode Curl_conn_keep_alive(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex);
|
||||
|
||||
void Curl_cf_def_close(struct Curl_cfilter *cf, struct Curl_easy *data);
|
||||
void Curl_conn_get_host(struct Curl_easy *data, int sockindex,
|
||||
const char **phost, const char **pdisplay_host,
|
||||
int *pport);
|
||||
|
@ -1060,7 +1060,18 @@ struct Curl_cftype Curl_cft_happy_eyeballs = {
|
||||
cf_he_query,
|
||||
};
|
||||
|
||||
CURLcode Curl_cf_happy_eyeballs_create(struct Curl_cfilter **pcf,
|
||||
/**
|
||||
* Create a happy eyeball connection filter that uses the, once resolved,
|
||||
* address information to connect on ip families based on connection
|
||||
* configuration.
|
||||
* @param pcf output, the created cfilter
|
||||
* @param data easy handle used in creation
|
||||
* @param conn connection the filter is created for
|
||||
* @param cf_create method to create the sub-filters performing the
|
||||
* actual connects.
|
||||
*/
|
||||
static CURLcode
|
||||
cf_happy_eyeballs_create(struct Curl_cfilter **pcf,
|
||||
struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
cf_ip_connect_create *cf_create,
|
||||
@ -1124,20 +1135,6 @@ static cf_ip_connect_create *get_cf_create(int transport)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef DEBUGBUILD
|
||||
void Curl_debug_set_transport_provider(int transport,
|
||||
cf_ip_connect_create *cf_create)
|
||||
{
|
||||
size_t i;
|
||||
for(i = 0; i < ARRAYSIZE(transport_providers); ++i) {
|
||||
if(transport == transport_providers[i].transport) {
|
||||
transport_providers[i].cf_create = cf_create;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* DEBUGBUILD */
|
||||
|
||||
static CURLcode cf_he_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
@ -1154,7 +1151,7 @@ static CURLcode cf_he_insert_after(struct Curl_cfilter *cf_at,
|
||||
DEBUGF(LOG_CF(data, cf_at, "unsupported transport type %d", transport));
|
||||
return CURLE_UNSUPPORTED_PROTOCOL;
|
||||
}
|
||||
result = Curl_cf_happy_eyeballs_create(&cf, data, cf_at->conn,
|
||||
result = cf_happy_eyeballs_create(&cf, data, cf_at->conn,
|
||||
cf_create, remotehost,
|
||||
transport);
|
||||
if(result)
|
||||
@ -1359,7 +1356,7 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_cf_setup_add(struct Curl_easy *data,
|
||||
static CURLcode cf_setup_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
@ -1378,6 +1375,21 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef DEBUGBUILD
|
||||
/* used by unit2600.c */
|
||||
void Curl_debug_set_transport_provider(int transport,
|
||||
cf_ip_connect_create *cf_create)
|
||||
{
|
||||
size_t i;
|
||||
for(i = 0; i < ARRAYSIZE(transport_providers); ++i) {
|
||||
if(transport == transport_providers[i].transport) {
|
||||
transport_providers[i].cf_create = cf_create;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* DEBUGBUILD */
|
||||
|
||||
CURLcode Curl_cf_setup_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
@ -1419,7 +1431,7 @@ CURLcode Curl_conn_setup(struct Curl_easy *data,
|
||||
|
||||
/* Still no cfilter set, apply default. */
|
||||
if(!conn->cfilter[sockindex]) {
|
||||
result = Curl_cf_setup_add(data, conn, sockindex, remotehost,
|
||||
result = cf_setup_add(data, conn, sockindex, remotehost,
|
||||
conn->transport, ssl_mode);
|
||||
if(result)
|
||||
goto out;
|
||||
|
@ -104,31 +104,6 @@ typedef CURLcode cf_ip_connect_create(struct Curl_cfilter **pcf,
|
||||
const struct Curl_addrinfo *ai,
|
||||
int transport);
|
||||
|
||||
/**
|
||||
* Create a happy eyeball connection filter that uses the, once resolved,
|
||||
* address information to connect on ip families based on connection
|
||||
* configuration.
|
||||
* @param pcf output, the created cfilter
|
||||
* @param data easy handle used in creation
|
||||
* @param conn connection the filter is created for
|
||||
* @param cf_create method to create the sub-filters performing the
|
||||
* actual connects.
|
||||
*/
|
||||
CURLcode
|
||||
Curl_cf_happy_eyeballs_create(struct Curl_cfilter **pcf,
|
||||
struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
cf_ip_connect_create *cf_create,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
int transport);
|
||||
|
||||
CURLcode Curl_cf_setup_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
int transport,
|
||||
int ssl_mode);
|
||||
|
||||
CURLcode Curl_cf_setup_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data,
|
||||
const struct Curl_dns_entry *remotehost,
|
||||
|
49
lib/dynhds.c
49
lib/dynhds.c
@ -158,17 +158,6 @@ struct dynhds_entry *Curl_dynhds_cget(struct dynhds *dynhds, const char *name)
|
||||
return Curl_dynhds_get(dynhds, name, strlen(name));
|
||||
}
|
||||
|
||||
bool Curl_dynhds_contains(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen)
|
||||
{
|
||||
return !!Curl_dynhds_get(dynhds, name, namelen);
|
||||
}
|
||||
|
||||
bool Curl_dynhds_ccontains(struct dynhds *dynhds, const char *name)
|
||||
{
|
||||
return Curl_dynhds_contains(dynhds, name, strlen(name));
|
||||
}
|
||||
|
||||
CURLcode Curl_dynhds_add(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen,
|
||||
const char *value, size_t valuelen)
|
||||
@ -221,20 +210,6 @@ CURLcode Curl_dynhds_cadd(struct dynhds *dynhds,
|
||||
return Curl_dynhds_add(dynhds, name, strlen(name), value, strlen(value));
|
||||
}
|
||||
|
||||
CURLcode Curl_dynhds_set(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen,
|
||||
const char *value, size_t valuelen)
|
||||
{
|
||||
Curl_dynhds_remove(dynhds, name, namelen);
|
||||
return Curl_dynhds_add(dynhds, name, namelen, value, valuelen);
|
||||
}
|
||||
|
||||
CURLcode Curl_dynhds_cset(struct dynhds *dynhds,
|
||||
const char *name, const char *value)
|
||||
{
|
||||
return Curl_dynhds_set(dynhds, name, strlen(name), value, strlen(value));
|
||||
}
|
||||
|
||||
CURLcode Curl_dynhds_h1_add_line(struct dynhds *dynhds,
|
||||
const char *line, size_t line_len)
|
||||
{
|
||||
@ -296,6 +271,20 @@ CURLcode Curl_dynhds_h1_cadd_line(struct dynhds *dynhds, const char *line)
|
||||
return Curl_dynhds_h1_add_line(dynhds, line, line? strlen(line) : 0);
|
||||
}
|
||||
|
||||
#ifdef DEBUGBUILD
|
||||
/* used by unit2602.c */
|
||||
|
||||
bool Curl_dynhds_contains(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen)
|
||||
{
|
||||
return !!Curl_dynhds_get(dynhds, name, namelen);
|
||||
}
|
||||
|
||||
bool Curl_dynhds_ccontains(struct dynhds *dynhds, const char *name)
|
||||
{
|
||||
return Curl_dynhds_contains(dynhds, name, strlen(name));
|
||||
}
|
||||
|
||||
size_t Curl_dynhds_count_name(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen)
|
||||
{
|
||||
@ -316,6 +305,14 @@ size_t Curl_dynhds_ccount_name(struct dynhds *dynhds, const char *name)
|
||||
return Curl_dynhds_count_name(dynhds, name, strlen(name));
|
||||
}
|
||||
|
||||
CURLcode Curl_dynhds_set(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen,
|
||||
const char *value, size_t valuelen)
|
||||
{
|
||||
Curl_dynhds_remove(dynhds, name, namelen);
|
||||
return Curl_dynhds_add(dynhds, name, namelen, value, valuelen);
|
||||
}
|
||||
|
||||
size_t Curl_dynhds_remove(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen)
|
||||
{
|
||||
@ -365,3 +362,5 @@ CURLcode Curl_dynhds_h1_dprint(struct dynhds *dynhds, struct dynbuf *dbuf)
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -137,6 +137,7 @@ size_t Curl_dynhds_remove(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen);
|
||||
size_t Curl_dynhds_cremove(struct dynhds *dynhds, const char *name);
|
||||
|
||||
|
||||
/**
|
||||
* Set the give header name and value, replacing any entries with
|
||||
* the same name. The header is added at the end of all (remaining)
|
||||
@ -145,6 +146,7 @@ size_t Curl_dynhds_cremove(struct dynhds *dynhds, const char *name);
|
||||
CURLcode Curl_dynhds_set(struct dynhds *dynhds,
|
||||
const char *name, size_t namelen,
|
||||
const char *value, size_t valuelen);
|
||||
|
||||
CURLcode Curl_dynhds_cset(struct dynhds *dynhds,
|
||||
const char *name, const char *value);
|
||||
|
||||
|
@ -128,7 +128,7 @@ static void freednsentry(void *freethis);
|
||||
/*
|
||||
* Return # of addresses in a Curl_addrinfo struct
|
||||
*/
|
||||
int Curl_num_addresses(const struct Curl_addrinfo *addr)
|
||||
static int num_addresses(const struct Curl_addrinfo *addr)
|
||||
{
|
||||
int i = 0;
|
||||
while(addr) {
|
||||
@ -410,7 +410,7 @@ UNITTEST CURLcode Curl_shuffle_addr(struct Curl_easy *data,
|
||||
struct Curl_addrinfo **addr)
|
||||
{
|
||||
CURLcode result = CURLE_OK;
|
||||
const int num_addrs = Curl_num_addresses(*addr);
|
||||
const int num_addrs = num_addresses(*addr);
|
||||
|
||||
if(num_addrs > 1) {
|
||||
struct Curl_addrinfo **nodes;
|
||||
|
@ -132,9 +132,6 @@ void Curl_init_dnscache(struct Curl_hash *hash, int hashsize);
|
||||
/* prune old entries from the DNS cache */
|
||||
void Curl_hostcache_prune(struct Curl_easy *data);
|
||||
|
||||
/* Return # of addresses in a Curl_addrinfo struct */
|
||||
int Curl_num_addresses(const struct Curl_addrinfo *addr);
|
||||
|
||||
/* IPv4 threadsafe resolve function used for synch and asynch builds */
|
||||
struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname, int port);
|
||||
|
||||
|
@ -2465,7 +2465,8 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
bool Curl_cf_is_http2(struct Curl_cfilter *cf, const struct Curl_easy *data)
|
||||
static bool Curl_cf_is_http2(struct Curl_cfilter *cf,
|
||||
const struct Curl_easy *data)
|
||||
{
|
||||
(void)data;
|
||||
for(; cf; cf = cf->next) {
|
||||
|
@ -47,8 +47,6 @@ bool Curl_h2_http_1_1_error(struct Curl_easy *data);
|
||||
bool Curl_conn_is_http2(const struct Curl_easy *data,
|
||||
const struct connectdata *conn,
|
||||
int sockindex);
|
||||
bool Curl_cf_is_http2(struct Curl_cfilter *cf, const struct Curl_easy *data);
|
||||
|
||||
bool Curl_http2_may_switch(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex);
|
||||
|
13
lib/socks.c
13
lib/socks.c
@ -1238,19 +1238,6 @@ struct Curl_cftype Curl_cft_socks_proxy = {
|
||||
Curl_cf_def_query,
|
||||
};
|
||||
|
||||
CURLcode Curl_conn_socks_proxy_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex)
|
||||
{
|
||||
struct Curl_cfilter *cf;
|
||||
CURLcode result;
|
||||
|
||||
result = Curl_cf_create(&cf, &Curl_cft_socks_proxy, NULL);
|
||||
if(!result)
|
||||
Curl_conn_cf_add(data, conn, sockindex, cf);
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_cf_socks_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data)
|
||||
{
|
||||
|
@ -51,10 +51,6 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data);
|
||||
#endif
|
||||
|
||||
CURLcode Curl_conn_socks_proxy_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex);
|
||||
|
||||
CURLcode Curl_cf_socks_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data);
|
||||
|
||||
|
15
lib/url.c
15
lib/url.c
@ -129,7 +129,11 @@
|
||||
#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
|
||||
#endif
|
||||
|
||||
static void conn_free(struct Curl_easy *data, struct connectdata *conn);
|
||||
#ifdef USE_NGHTTP2
|
||||
static void data_priority_cleanup(struct Curl_easy *data);
|
||||
#else
|
||||
#define data_priority_cleanup(x)
|
||||
#endif
|
||||
|
||||
/* 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
|
||||
@ -420,7 +424,7 @@ CURLcode Curl_close(struct Curl_easy **datap)
|
||||
Curl_resolver_cancel(data);
|
||||
Curl_resolver_cleanup(data->state.async.resolver);
|
||||
|
||||
Curl_data_priority_cleanup(data);
|
||||
data_priority_cleanup(data);
|
||||
|
||||
/* No longer a dirty share, if it exists */
|
||||
if(data->share) {
|
||||
@ -4027,9 +4031,9 @@ CURLcode Curl_data_priority_add_child(struct Curl_easy *parent,
|
||||
|
||||
#endif /* USE_NGHTTP2 */
|
||||
|
||||
void Curl_data_priority_cleanup(struct Curl_easy *data)
|
||||
{
|
||||
#ifdef USE_NGHTTP2
|
||||
static void data_priority_cleanup(struct Curl_easy *data)
|
||||
{
|
||||
while(data->set.priority.children) {
|
||||
struct Curl_easy *tmp = data->set.priority.children->data;
|
||||
priority_remove_child(data, tmp);
|
||||
@ -4039,9 +4043,8 @@ void Curl_data_priority_cleanup(struct Curl_easy *data)
|
||||
|
||||
if(data->set.priority.parent)
|
||||
priority_remove_child(data->set.priority.parent, data);
|
||||
#endif
|
||||
(void)data;
|
||||
}
|
||||
#endif
|
||||
|
||||
void Curl_data_priority_clear_state(struct Curl_easy *data)
|
||||
{
|
||||
|
@ -60,10 +60,8 @@ void Curl_verboseconnect(struct Curl_easy *data, struct connectdata *conn);
|
||||
#endif
|
||||
|
||||
#if defined(USE_HTTP2) || defined(USE_HTTP3)
|
||||
void Curl_data_priority_cleanup(struct Curl_easy *data);
|
||||
void Curl_data_priority_clear_state(struct Curl_easy *data);
|
||||
#else
|
||||
#define Curl_data_priority_cleanup(x)
|
||||
#define Curl_data_priority_clear_state(x)
|
||||
#endif /* !(defined(USE_HTTP2) || defined(USE_HTTP3)) */
|
||||
|
||||
|
@ -224,11 +224,11 @@ static CURLcode send_packet_no_gso(struct Curl_cfilter *cf,
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
CURLcode vquic_send_packets(struct Curl_cfilter *cf,
|
||||
static CURLcode vquic_send_packets(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
struct cf_quic_ctx *qctx,
|
||||
const uint8_t *pkt, size_t pktlen, size_t gsolen,
|
||||
size_t *psent)
|
||||
const uint8_t *pkt, size_t pktlen,
|
||||
size_t gsolen, size_t *psent)
|
||||
{
|
||||
if(qctx->no_gso && pktlen > gsolen) {
|
||||
return send_packet_no_gso(cf, data, qctx, pkt, pktlen, gsolen, psent);
|
||||
|
@ -47,12 +47,6 @@ struct cf_quic_ctx {
|
||||
CURLcode vquic_ctx_init(struct cf_quic_ctx *qctx);
|
||||
void vquic_ctx_free(struct cf_quic_ctx *qctx);
|
||||
|
||||
CURLcode vquic_send_packets(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
struct cf_quic_ctx *qctx,
|
||||
const uint8_t *pkt, size_t pktlen, size_t gsolen,
|
||||
size_t *psent);
|
||||
|
||||
void vquic_push_blocked_pkt(struct Curl_cfilter *cf,
|
||||
struct cf_quic_ctx *qctx,
|
||||
const uint8_t *pkt, size_t pktlen, size_t gsolen);
|
||||
|
@ -781,20 +781,6 @@ CURLcode Curl_ssl_push_certinfo_len(struct Curl_easy *data,
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a convenience function for push_certinfo_len that takes a zero
|
||||
* terminated value.
|
||||
*/
|
||||
CURLcode Curl_ssl_push_certinfo(struct Curl_easy *data,
|
||||
int certnum,
|
||||
const char *label,
|
||||
const char *value)
|
||||
{
|
||||
size_t valuelen = strlen(value);
|
||||
|
||||
return Curl_ssl_push_certinfo_len(data, certnum, label, value, valuelen);
|
||||
}
|
||||
|
||||
CURLcode Curl_ssl_random(struct Curl_easy *data,
|
||||
unsigned char *entropy,
|
||||
size_t length)
|
||||
@ -1834,19 +1820,6 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_ssl_cfilter_proxy_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex)
|
||||
{
|
||||
struct Curl_cfilter *cf;
|
||||
CURLcode result;
|
||||
|
||||
result = cf_ssl_proxy_create(&cf, data, conn);
|
||||
if(!result)
|
||||
Curl_conn_cf_add(data, conn, sockindex, cf);
|
||||
return result;
|
||||
}
|
||||
|
||||
CURLcode Curl_cf_ssl_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data)
|
||||
{
|
||||
@ -1960,19 +1933,6 @@ Curl_ssl_cf_get_primary_config(struct Curl_cfilter *cf)
|
||||
#endif
|
||||
}
|
||||
|
||||
struct ssl_primary_config *
|
||||
Curl_ssl_get_primary_config(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex)
|
||||
{
|
||||
struct Curl_cfilter *cf;
|
||||
|
||||
(void)data;
|
||||
DEBUGASSERT(conn);
|
||||
cf = get_ssl_cf_engaged(conn, sockindex);
|
||||
return cf? Curl_ssl_cf_get_primary_config(cf) : NULL;
|
||||
}
|
||||
|
||||
struct Curl_cfilter *Curl_ssl_cf_get_ssl(struct Curl_cfilter *cf)
|
||||
{
|
||||
for(; cf; cf = cf->next) {
|
||||
|
@ -155,9 +155,6 @@ CURLcode Curl_ssl_cfilter_remove(struct Curl_easy *data,
|
||||
int sockindex);
|
||||
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
CURLcode Curl_ssl_cfilter_proxy_add(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex);
|
||||
CURLcode Curl_cf_ssl_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data);
|
||||
#endif /* !CURL_DISABLE_PROXY */
|
||||
@ -174,20 +171,6 @@ CURLcode Curl_cf_ssl_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct ssl_config_data *Curl_ssl_get_config(struct Curl_easy *data,
|
||||
int sockindex);
|
||||
|
||||
/**
|
||||
* Get the primary SSL configuration from the connection.
|
||||
* This returns NULL if no SSL is configured.
|
||||
* Otherwise it returns the config of the first (highest) one that is
|
||||
* either connected, in handshake or about to start
|
||||
* (e.g. all filters below it are connected). If SSL filters are present,
|
||||
* but neither can start operating, return the config of the lowest one
|
||||
* that will first come into effect when connecting.
|
||||
*/
|
||||
struct ssl_primary_config *
|
||||
Curl_ssl_get_primary_config(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
int sockindex);
|
||||
|
||||
/**
|
||||
* True iff the underlying SSL implementation supports the option.
|
||||
* Option is one of the defined SSLSUPP_* values.
|
||||
@ -226,7 +209,6 @@ extern struct Curl_cftype Curl_cft_ssl_proxy;
|
||||
#define Curl_ssl_get_internals(a,b,c,d) NULL
|
||||
#define Curl_ssl_supports(a,b) FALSE
|
||||
#define Curl_ssl_cfilter_add(a,b,c) CURLE_NOT_BUILT_IN
|
||||
#define Curl_ssl_cfilter_proxy_add(a,b,c) CURLE_NOT_BUILT_IN
|
||||
#define Curl_ssl_get_config(a,b) NULL
|
||||
#define Curl_ssl_cfilter_remove(a,b) CURLE_OK
|
||||
#endif
|
||||
|
@ -918,6 +918,20 @@ static const char *dumpAlgo(struct Curl_asn1Element *param,
|
||||
return OID2str(oid.beg, oid.end, TRUE);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a convenience function for push_certinfo_len that takes a zero
|
||||
* terminated value.
|
||||
*/
|
||||
static CURLcode ssl_push_certinfo(struct Curl_easy *data,
|
||||
int certnum,
|
||||
const char *label,
|
||||
const char *value)
|
||||
{
|
||||
size_t valuelen = strlen(value);
|
||||
|
||||
return Curl_ssl_push_certinfo_len(data, certnum, label, value, valuelen);
|
||||
}
|
||||
|
||||
/* return 0 on success, 1 on error */
|
||||
static int do_pubkey_field(struct Curl_easy *data, int certnum,
|
||||
const char *label, struct Curl_asn1Element *elem)
|
||||
@ -930,7 +944,7 @@ static int do_pubkey_field(struct Curl_easy *data, int certnum,
|
||||
output = ASN1tostr(elem, 0);
|
||||
if(output) {
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, label, output);
|
||||
result = ssl_push_certinfo(data, certnum, label, output);
|
||||
if(!certnum && !result)
|
||||
infof(data, " %s: %s", label, output);
|
||||
free((char *) output);
|
||||
@ -960,7 +974,7 @@ static int do_pubkey(struct Curl_easy *data, int certnum,
|
||||
if(data->set.ssl.certinfo) {
|
||||
char q[sizeof(len) * 8 / 3 + 1];
|
||||
(void)msnprintf(q, sizeof(q), "%lu", len);
|
||||
if(Curl_ssl_push_certinfo(data, certnum, "ECC Public Key", q))
|
||||
if(ssl_push_certinfo(data, certnum, "ECC Public Key", q))
|
||||
return 1;
|
||||
}
|
||||
return do_pubkey_field(data, certnum, "ecPublicKey", pubkey);
|
||||
@ -994,7 +1008,7 @@ static int do_pubkey(struct Curl_easy *data, int certnum,
|
||||
if(data->set.ssl.certinfo) {
|
||||
char r[sizeof(len) * 8 / 3 + 1];
|
||||
msnprintf(r, sizeof(r), "%lu", len);
|
||||
if(Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", r))
|
||||
if(ssl_push_certinfo(data, certnum, "RSA Public Key", r))
|
||||
return 1;
|
||||
}
|
||||
/* Generate coefficients. */
|
||||
@ -1092,7 +1106,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo) {
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Subject", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Subject", ccp);
|
||||
if(result)
|
||||
return result;
|
||||
}
|
||||
@ -1105,7 +1119,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo) {
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Issuer", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Issuer", ccp);
|
||||
}
|
||||
if(!certnum)
|
||||
infof(data, " Issuer: %s", ccp);
|
||||
@ -1121,7 +1135,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
ccp = curl_maprintf("%x", version);
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Version", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Version", ccp);
|
||||
free((char *) ccp);
|
||||
if(result)
|
||||
return result;
|
||||
@ -1134,7 +1148,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Serial Number", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Serial Number", ccp);
|
||||
if(!certnum)
|
||||
infof(data, " Serial Number: %s", ccp);
|
||||
free((char *) ccp);
|
||||
@ -1147,7 +1161,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
|
||||
if(!certnum)
|
||||
infof(data, " Signature Algorithm: %s", ccp);
|
||||
free((char *) ccp);
|
||||
@ -1159,7 +1173,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Start Date", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Start Date", ccp);
|
||||
if(!certnum)
|
||||
infof(data, " Start Date: %s", ccp);
|
||||
free((char *) ccp);
|
||||
@ -1171,7 +1185,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Expire Date", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Expire Date", ccp);
|
||||
if(!certnum)
|
||||
infof(data, " Expire Date: %s", ccp);
|
||||
free((char *) ccp);
|
||||
@ -1184,7 +1198,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm",
|
||||
result = ssl_push_certinfo(data, certnum, "Public Key Algorithm",
|
||||
ccp);
|
||||
if(!result) {
|
||||
int ret;
|
||||
@ -1203,7 +1217,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
if(!ccp)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Signature", ccp);
|
||||
result = ssl_push_certinfo(data, certnum, "Signature", ccp);
|
||||
if(!certnum)
|
||||
infof(data, " Signature: %s", ccp);
|
||||
free((char *) ccp);
|
||||
@ -1238,7 +1252,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
||||
cp2[i] = '\0';
|
||||
free(cp1);
|
||||
if(data->set.ssl.certinfo)
|
||||
result = Curl_ssl_push_certinfo(data, certnum, "Cert", cp2);
|
||||
result = ssl_push_certinfo(data, certnum, "Cert", cp2);
|
||||
if(!certnum)
|
||||
infof(data, "%s", cp2);
|
||||
free(cp2);
|
||||
|
Loading…
Reference in New Issue
Block a user