urldata: cleanups
No binary (build failed)
—
(log yok)
| @@ -786,7 +786,7 @@ out: | |
| static CURLcode cf_hc_add(struct Curl_easy *data, | |
| struct Curl_peer *destination, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| uint8_t def_transport) | |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -809,7 +809,7 @@ out: | |
| CURLcode Curl_cf_https_setup(struct Curl_easy *data, | |
| struct Curl_peer *destination, | |
| struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| CURLcode result = CURLE_OK; | |
| @@ -38,7 +38,7 @@ extern struct Curl_cftype Curl_cft_http_connect; | |
| CURLcode Curl_cf_https_setup(struct Curl_easy *data, | |
| struct Curl_peer *destination, | |
| struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| #endif /* !CURL_DISABLE_HTTP */ | |
| #endif /* HEADER_CURL_CF_HTTP_H */ | |
| @@ -137,7 +137,7 @@ out: | |
| CURLcode Curl_cf_recvbuf_add(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| const uint8_t *buf, size_t blen) | |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -30,7 +30,7 @@ | |
| CURLcode Curl_cf_recvbuf_add(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| const uint8_t *buf, size_t blen); | |
| extern struct Curl_cftype Curl_cft_recvbuf; | |
| @@ -159,7 +159,7 @@ static CURLcode cf_setup_add_http_proxy(struct Curl_cfilter *cf, | |
| /* Get the origin curl connects its socket to. | |
| * Can be origin or the first proxy. */ | |
| static struct Curl_peer *conn_get_first_origin(struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| #ifndef CURL_DISABLE_PROXY | |
| if(conn->socks_proxy.peer) | |
| @@ -445,7 +445,7 @@ out: | |
| CURLcode Curl_cf_setup_add(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| uint8_t transport, | |
| int ssl_mode) | |
| { | |
| @@ -32,7 +32,7 @@ struct Curl_str; | |
| CURLcode Curl_cf_setup_add(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| uint8_t transport, | |
| int ssl_mode); | |
| @@ -2320,7 +2320,7 @@ struct Curl_cftype Curl_cft_tcp_accept = { | |
| CURLcode Curl_conn_tcp_listen_set(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, curl_socket_t *s) |
| + | int8_t sockindex, curl_socket_t *s) |
| { | |
| CURLcode result; | |
| struct Curl_cfilter *cf = NULL; | |
| @@ -2360,7 +2360,7 @@ out: | |
| } | |
| bool Curl_conn_is_tcp_listen(struct Curl_easy *data, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf = data->conn->cfilter[sockindex]; | |
| while(cf) { | |
| @@ -122,7 +122,7 @@ CURLcode Curl_cf_unix_create(struct Curl_cfilter **pcf, | |
| */ | |
| CURLcode Curl_conn_tcp_listen_set(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| curl_socket_t *s); | |
| /** | |
| @@ -130,7 +130,7 @@ CURLcode Curl_conn_tcp_listen_set(struct Curl_easy *data, | |
| * Curl_conn_tcp_listen_set(). | |
| */ | |
| bool Curl_conn_is_tcp_listen(struct Curl_easy *data, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /** | |
| * Peek at the socket and remote ip/port the socket filter is using. | |
| @@ -128,7 +128,7 @@ CURLcode Curl_cf_def_query(struct Curl_cfilter *cf, | |
| #ifdef CURLVERBOSE | |
| void Curl_conn_trc_filters(struct Curl_easy *data, | |
| - | int sockindex, const char *info) |
| + | int8_t sockindex, const char *info) |
| { | |
| if(CURL_TRC_M_is_verbose(data) && data->conn) { | |
| struct Curl_cfilter *cf = data->conn->cfilter[sockindex]; | |
| @@ -177,14 +177,15 @@ void Curl_conn_cf_discard_chain(struct Curl_cfilter **pcf, | |
| } | |
| void Curl_conn_cf_discard_all(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex) |
| + | struct connectdata *conn, int8_t sockindex) |
| { | |
| struct curltime *pt = &conn->shutdown.start[sockindex]; | |
| memset(pt, 0, sizeof(*pt)); | |
| Curl_conn_cf_discard_chain(&conn->cfilter[sockindex], data); | |
| } | |
| - | CURLcode Curl_conn_shutdown(struct Curl_easy *data, int sockindex, bool *done) |
| + | CURLcode Curl_conn_shutdown(struct Curl_easy *data, |
| + | int8_t sockindex, bool *done) |
| { | |
| struct Curl_cfilter *cf; | |
| CURLcode result = CURLE_OK; | |
| @@ -239,7 +240,7 @@ CURLcode Curl_conn_shutdown(struct Curl_easy *data, int sockindex, bool *done) | |
| return result; | |
| } | |
| - | CURLcode Curl_cf_recv(struct Curl_easy *data, int sockindex, char *buf, |
| + | CURLcode Curl_cf_recv(struct Curl_easy *data, int8_t sockindex, char *buf, |
| size_t len, size_t *pnread) | |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -257,7 +258,7 @@ CURLcode Curl_cf_recv(struct Curl_easy *data, int sockindex, char *buf, | |
| return CURLE_FAILED_INIT; | |
| } | |
| - | CURLcode Curl_cf_send(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_cf_send(struct Curl_easy *data, int8_t sockindex, |
| const uint8_t *buf, size_t len, bool eos, | |
| size_t *pnwritten) | |
| { | |
| @@ -358,7 +359,7 @@ out: | |
| void Curl_conn_cf_add(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_cfilter *cf) | |
| { | |
| DEBUGASSERT(conn); | |
| @@ -468,7 +469,7 @@ void Curl_conn_cntrl_update_info(struct Curl_easy *data, | |
| } | |
| void Curl_conn_remove_setup_filters(struct Curl_easy *data, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| struct Curl_cfilter **anchor = &data->conn->cfilter[sockindex]; | |
| while(*anchor) { | |
| @@ -485,14 +486,14 @@ void Curl_conn_remove_setup_filters(struct Curl_easy *data, | |
| } | |
| } | |
| - | bool Curl_conn_is_setup(struct connectdata *conn, int sockindex) |
| + | bool Curl_conn_is_setup(struct connectdata *conn, int8_t sockindex) |
| { | |
| if(!CONN_SOCK_IDX_VALID(sockindex)) | |
| return FALSE; | |
| return !!conn->cfilter[sockindex]; | |
| } | |
| - | bool Curl_conn_is_connected(struct connectdata *conn, int sockindex) |
| + | bool Curl_conn_is_connected(struct connectdata *conn, int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -506,7 +507,7 @@ bool Curl_conn_is_connected(struct connectdata *conn, int sockindex) | |
| return FALSE; | |
| } | |
| - | bool Curl_conn_is_ip_connected(struct Curl_easy *data, int sockindex) |
| + | bool Curl_conn_is_ip_connected(struct Curl_easy *data, int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -533,14 +534,14 @@ static bool cf_is_tunneling(struct Curl_cfilter *cf) | |
| return FALSE; | |
| } | |
| - | bool Curl_conn_is_tunneling(struct connectdata *conn, int sockindex) |
| + | bool Curl_conn_is_tunneling(struct connectdata *conn, int8_t sockindex) |
| { | |
| if(!CONN_SOCK_IDX_VALID(sockindex)) | |
| return FALSE; | |
| return conn ? cf_is_tunneling(conn->cfilter[sockindex]) : FALSE; | |
| } | |
| #else | |
| - | bool Curl_conn_is_tunneling(struct connectdata *conn, int sockindex) |
| + | bool Curl_conn_is_tunneling(struct connectdata *conn, int8_t sockindex) |
| { | |
| (void)conn; | |
| (void)sockindex; | |
| @@ -561,7 +562,7 @@ static bool cf_is_ssl(struct Curl_cfilter *cf) | |
| return FALSE; | |
| } | |
| - | bool Curl_conn_is_ssl(struct connectdata *conn, int sockindex) |
| + | bool Curl_conn_is_ssl(struct connectdata *conn, int8_t sockindex) |
| { | |
| if(!CONN_SOCK_IDX_VALID(sockindex)) | |
| return FALSE; | |
| @@ -569,7 +570,7 @@ bool Curl_conn_is_ssl(struct connectdata *conn, int sockindex) | |
| } | |
| bool Curl_conn_get_ssl_info(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex, |
| + | struct connectdata *conn, int8_t sockindex, |
| int query, | |
| struct curl_tlssessioninfo *info) | |
| { | |
| @@ -586,7 +587,7 @@ bool Curl_conn_get_ssl_info(struct Curl_easy *data, | |
| } | |
| CURLcode Curl_conn_get_ip_info(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex, |
| + | struct connectdata *conn, int8_t sockindex, |
| bool *is_ipv6, struct ip_quadruple *ipquad) | |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -596,7 +597,7 @@ CURLcode Curl_conn_get_ip_info(struct Curl_easy *data, | |
| return Curl_conn_cf_get_ip_info(cf, data, is_ipv6, ipquad); | |
| } | |
| - | bool Curl_conn_is_multiplex(struct connectdata *conn, int sockindex) |
| + | bool Curl_conn_is_multiplex(struct connectdata *conn, int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -673,7 +674,7 @@ unsigned char Curl_conn_http_version(struct Curl_easy *data, | |
| return (unsigned char)(result ? 0 : v); | |
| } | |
| - | bool Curl_conn_data_pending(struct Curl_easy *data, int sockindex) |
| + | bool Curl_conn_data_pending(struct Curl_easy *data, int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -703,7 +704,7 @@ bool Curl_conn_cf_needs_flush(struct Curl_cfilter *cf, | |
| return (result || !pending) ? FALSE : TRUE; | |
| } | |
| - | bool Curl_conn_needs_flush(struct Curl_easy *data, int sockindex) |
| + | bool Curl_conn_needs_flush(struct Curl_easy *data, int8_t sockindex) |
| { | |
| if(!CONN_SOCK_IDX_VALID(sockindex)) | |
| return FALSE; | |
| @@ -736,7 +737,7 @@ CURLcode Curl_conn_adjust_pollset(struct Curl_easy *data, | |
| { | |
| CURLcode result = CURLE_OK; | |
| bool want_io = !!ps->n; | |
| - | int i; |
| + | int8_t i; |
| DEBUGASSERT(data); | |
| DEBUGASSERT(conn); | |
| @@ -790,7 +791,7 @@ int Curl_conn_cf_poll(struct Curl_cfilter *cf, | |
| return rc; | |
| } | |
| - | void Curl_conn_get_current_host(struct Curl_easy *data, int sockindex, |
| + | void Curl_conn_get_current_host(struct Curl_easy *data, int8_t sockindex, |
| const char **phost, int *pport) | |
| { | |
| struct Curl_cfilter *cf, *cf_proxy = NULL; | |
| @@ -924,7 +925,7 @@ curl_socket_t Curl_conn_get_first_socket(struct Curl_easy *data) | |
| } | |
| const struct Curl_sockaddr_ex *Curl_conn_get_remote_addr( | |
| - | struct Curl_easy *data, int sockindex) |
| + | struct Curl_easy *data, int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf = | |
| (data->conn && CONN_SOCK_IDX_VALID(sockindex)) ? | |
| @@ -937,7 +938,7 @@ CURLcode Curl_conn_ev_data_setup(struct Curl_easy *data) | |
| return cf_cntrl_all(data->conn, data, FALSE, CF_CTRL_DATA_SETUP, 0, NULL); | |
| } | |
| - | CURLcode Curl_conn_flush(struct Curl_easy *data, int sockindex) |
| + | CURLcode Curl_conn_flush(struct Curl_easy *data, int8_t sockindex) |
| { | |
| if(!CONN_SOCK_IDX_VALID(sockindex)) | |
| return CURLE_BAD_FUNCTION_ARGUMENT; | |
| @@ -993,7 +994,7 @@ CURLcode Curl_conn_keep_alive(struct Curl_easy *data, | |
| size_t Curl_conn_get_max_concurrent(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf; | |
| CURLcode result; | |
| @@ -1013,7 +1014,7 @@ size_t Curl_conn_get_max_concurrent(struct Curl_easy *data, | |
| int Curl_conn_get_stream_error(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf; | |
| CURLcode result; | |
| @@ -1028,7 +1029,7 @@ int Curl_conn_get_stream_error(struct Curl_easy *data, | |
| return (result || n < 0) ? 0 : n; | |
| } | |
| - | int Curl_conn_sockindex(struct Curl_easy *data, curl_socket_t sockfd) |
| + | int8_t Curl_conn_sockindex(struct Curl_easy *data, curl_socket_t sockfd) |
| { | |
| if(data && data->conn && | |
| sockfd != CURL_SOCKET_BAD && sockfd == data->conn->sock[SECONDARYSOCKET]) | |
| @@ -1036,7 +1037,7 @@ int Curl_conn_sockindex(struct Curl_easy *data, curl_socket_t sockfd) | |
| return FIRSTSOCKET; | |
| } | |
| - | CURLcode Curl_conn_recv(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_conn_recv(struct Curl_easy *data, int8_t sockindex, |
| char *buf, size_t len, size_t *pnread) | |
| { | |
| DEBUGASSERT(data); | |
| @@ -1049,7 +1050,7 @@ CURLcode Curl_conn_recv(struct Curl_easy *data, int sockindex, | |
| return CURLE_FAILED_INIT; | |
| } | |
| - | CURLcode Curl_conn_send(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_conn_send(struct Curl_easy *data, int8_t sockindex, |
| const void *buf, size_t len, bool eos, | |
| size_t *pnwritten) | |
| { | |
| @@ -231,7 +231,7 @@ struct Curl_cfilter { | |
| struct Curl_cfilter *next; /* next filter in chain */ | |
| void *ctx; /* filter type specific settings */ | |
| struct connectdata *conn; /* the connection this filter belongs to */ | |
| - | int sockindex; /* the index the filter is installed at */ |
| + | int8_t sockindex; /* the index the filter is installed at */ |
| BIT(connected); /* != 0 iff this filter is connected */ | |
| BIT(shutdown); /* != 0 iff this filter has shut down */ | |
| }; | |
| @@ -286,7 +286,7 @@ CURLcode Curl_cf_create(struct Curl_cfilter **pcf, | |
| */ | |
| void Curl_conn_cf_add(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_cfilter *cf); | |
| /** | |
| @@ -314,7 +314,7 @@ void Curl_conn_cf_discard_chain(struct Curl_cfilter **pcf, | |
| * Remove and destroy all filters at chain `sockindex` on connection `conn`. | |
| */ | |
| void Curl_conn_cf_discard_all(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex); |
| + | struct connectdata *conn, int8_t sockindex); |
| CURLcode Curl_conn_cf_connect(struct Curl_cfilter *cf, | |
| struct Curl_easy *data, | |
| @@ -359,31 +359,31 @@ const char *Curl_conn_cf_get_alpn_negotiated(struct Curl_cfilter *cf, | |
| /** | |
| * Check if a filter chain at `sockindex` for connection `conn` exists. | |
| */ | |
| - | bool Curl_conn_is_setup(struct connectdata *conn, int sockindex); |
| + | bool Curl_conn_is_setup(struct connectdata *conn, int8_t sockindex); |
| /** | |
| * Check if the filter chain at `sockindex` for connection `conn` is | |
| * completely connected. | |
| */ | |
| - | bool Curl_conn_is_connected(struct connectdata *conn, int sockindex); |
| + | bool Curl_conn_is_connected(struct connectdata *conn, int8_t sockindex); |
| /** | |
| * Determine if we have reached the remote host on IP level, e.g. | |
| * have a TCP connection. This turns TRUE before a possible SSL | |
| * handshake has been started/done. | |
| */ | |
| - | bool Curl_conn_is_ip_connected(struct Curl_easy *data, int sockindex); |
| + | bool Curl_conn_is_ip_connected(struct Curl_easy *data, int8_t sockindex); |
| /** | |
| * Determine if the connection is using SSL to the remote host | |
| * (or will be once connected). This will return FALSE, if SSL | |
| * is only used in proxying and not for the tunnel itself. | |
| */ | |
| - | bool Curl_conn_is_ssl(struct connectdata *conn, int sockindex); |
| + | bool Curl_conn_is_ssl(struct connectdata *conn, int8_t sockindex); |
| /* Determine if the connection has one or more proxy filters. | |
| * e.g. is tunneling. */ | |
| - | bool Curl_conn_is_tunneling(struct connectdata *conn, int sockindex); |
| + | bool Curl_conn_is_tunneling(struct connectdata *conn, int8_t sockindex); |
| /* | |
| * Fill `info` with information about the TLS instance securing the connection | |
| @@ -391,18 +391,18 @@ bool Curl_conn_is_tunneling(struct connectdata *conn, int sockindex); | |
| * FALSE. 'query' should be CF_QUERY_SSL_INFO or CF_QUERY_SSL_CTX_INFO. | |
| */ | |
| bool Curl_conn_get_ssl_info(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex, |
| + | struct connectdata *conn, int8_t sockindex, |
| int query, | |
| struct curl_tlssessioninfo *info); | |
| CURLcode Curl_conn_get_ip_info(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex, |
| + | struct connectdata *conn, int8_t sockindex, |
| bool *is_ipv6, struct ip_quadruple *ipquad); | |
| /** | |
| * Connection provides multiplexing of easy handles at `socketindex`. | |
| */ | |
| - | bool Curl_conn_is_multiplex(struct connectdata *conn, int sockindex); |
| + | bool Curl_conn_is_multiplex(struct connectdata *conn, int8_t sockindex); |
| /** | |
| * Return the HTTP version used on the FIRSTSOCKET connection filters | |
| @@ -423,32 +423,33 @@ void Curl_conn_cntrl_update_info(struct Curl_easy *data, | |
| struct connectdata *conn); | |
| void Curl_conn_remove_setup_filters(struct Curl_easy *data, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /** | |
| * Shutdown the connection at `sockindex` non-blocking, using timeout | |
| * from `data->set.shutdowntimeout`, default DEFAULT_SHUTDOWN_TIMEOUT_MS. | |
| * Return CURLE_OK and *done == FALSE if not finished. | |
| */ | |
| - | CURLcode Curl_conn_shutdown(struct Curl_easy *data, int sockindex, bool *done); |
| + | CURLcode Curl_conn_shutdown(struct Curl_easy *data, |
| + | int8_t sockindex, bool *done); |
| /** | |
| * Return if data is pending in some connection filter at chain | |
| * `sockindex` for connection `data->conn`. | |
| */ | |
| bool Curl_conn_data_pending(struct Curl_easy *data, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /** | |
| * Return TRUE if any of the connection filters at chain `sockindex` | |
| * have data still to send. | |
| */ | |
| - | bool Curl_conn_needs_flush(struct Curl_easy *data, int sockindex); |
| + | bool Curl_conn_needs_flush(struct Curl_easy *data, int8_t sockindex); |
| /** | |
| * Flush any pending data on the connection filters at chain `sockindex`. | |
| */ | |
| - | CURLcode Curl_conn_flush(struct Curl_easy *data, int sockindex); |
| + | CURLcode Curl_conn_flush(struct Curl_easy *data, int8_t sockindex); |
| /** | |
| * Return the socket used on data's connection for FIRSTSOCKET, | |
| @@ -459,12 +460,12 @@ curl_socket_t Curl_conn_get_first_socket(struct Curl_easy *data); | |
| /* Return a pointer to the connected socket address or NULL. */ | |
| const struct Curl_sockaddr_ex * | |
| - | Curl_conn_get_remote_addr(struct Curl_easy *data, int sockindex); |
| + | Curl_conn_get_remote_addr(struct Curl_easy *data, int8_t sockindex); |
| /** | |
| * Tell filters to forget about the socket at sockindex. | |
| */ | |
| - | void Curl_conn_forget_socket(struct Curl_easy *data, int sockindex); |
| + | void Curl_conn_forget_socket(struct Curl_easy *data, int8_t sockindex); |
| /** | |
| * Adjust the pollset for the filter chain starting at `cf`. | |
| @@ -494,7 +495,7 @@ int Curl_conn_cf_poll(struct Curl_cfilter *cf, | |
| * `data->conn`. Copy at most `len` bytes into `buf`. Return the | |
| * actual number of bytes copied in `*pnread`or an error. | |
| */ | |
| - | CURLcode Curl_cf_recv(struct Curl_easy *data, int sockindex, char *buf, |
| + | CURLcode Curl_cf_recv(struct Curl_easy *data, int8_t sockindex, char *buf, |
| size_t len, size_t *pnread); | |
| /** | |
| @@ -502,7 +503,7 @@ CURLcode Curl_cf_recv(struct Curl_easy *data, int sockindex, char *buf, | |
| * at connection `data->conn`. Return the actual number of bytes written | |
| * in `*pnwritten` or on error. | |
| */ | |
| - | CURLcode Curl_cf_send(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_cf_send(struct Curl_easy *data, int8_t sockindex, |
| const uint8_t *buf, size_t len, bool eos, | |
| size_t *pnwritten); | |
| @@ -571,7 +572,7 @@ CURLcode Curl_conn_keep_alive(struct Curl_easy *data, | |
| * During connect, when tunneling proxies are involved (http or socks), | |
| * it will be the name and port the proxy currently negotiates with. | |
| */ | |
| - | void Curl_conn_get_current_host(struct Curl_easy *data, int sockindex, |
| + | void Curl_conn_get_current_host(struct Curl_easy *data, int8_t sockindex, |
| const char **phost, int *pport); | |
| /** | |
| @@ -580,18 +581,18 @@ void Curl_conn_get_current_host(struct Curl_easy *data, int sockindex, | |
| */ | |
| size_t Curl_conn_get_max_concurrent(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /** | |
| * Get the underlying error code for a transfer stream or 0 if not known. | |
| */ | |
| int Curl_conn_get_stream_error(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| #ifdef CURLVERBOSE | |
| void Curl_conn_trc_filters(struct Curl_easy *data, | |
| - | int sockindex, const char *info); |
| + | int8_t sockindex, const char *info); |
| #endif | |
| /** | |
| @@ -599,20 +600,20 @@ void Curl_conn_trc_filters(struct Curl_easy *data, | |
| * Useful in calling `Curl_conn_send()/Curl_conn_recv()` with the | |
| * correct socket index. | |
| */ | |
| - | int Curl_conn_sockindex(struct Curl_easy *data, curl_socket_t sockfd); |
| + | int8_t Curl_conn_sockindex(struct Curl_easy *data, curl_socket_t sockfd); |
| /* | |
| * Receive data on the connection, using FIRSTSOCKET/SECONDARYSOCKET. | |
| * Return CURLE_AGAIN iff blocked on receiving. | |
| */ | |
| - | CURLcode Curl_conn_recv(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_conn_recv(struct Curl_easy *data, int8_t sockindex, |
| char *buf, size_t len, size_t *pnread); | |
| /* | |
| * Send data on the connection, using FIRSTSOCKET/SECONDARYSOCKET. | |
| * Return CURLE_AGAIN iff blocked on sending. | |
| */ | |
| - | CURLcode Curl_conn_send(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_conn_send(struct Curl_easy *data, int8_t sockindex, |
| const void *buf, size_t len, bool eos, | |
| size_t *pnwritten); | |
| @@ -658,7 +658,8 @@ bool Curl_cpool_conn_now_idle(struct Curl_easy *data, | |
| maxconnects = data->multi->maxconnects; | |
| } | |
| - | conn->lastused = *Curl_pgrs_now(data); /* it was used up until now */ |
| + | /* remember times, connection had been used just before */ |
| + | conn->lastchecked = conn->lastupkeep = conn->lastused = *Curl_pgrs_now(data); |
| if(cpool && maxconnects) { | |
| /* may be called form a callback already under lock */ | |
| bool do_lock = !CPOOL_IS_LOCKED(cpool); | |
| @@ -783,15 +784,17 @@ static int conn_upkeep(struct cpool *cpool, | |
| struct connectdata *conn, | |
| void *param) | |
| { | |
| + | const struct curltime *pnow = Curl_pgrs_now(admin); |
| + | |
| (void)param; | |
| - | if(curlx_ptimediff_ms(Curl_pgrs_now(admin), &conn->keepalive) >= |
| + | if(curlx_ptimediff_ms(pnow, &conn->lastupkeep) >= |
| admin->set.upkeep_interval_ms) { | |
| CURLcode result; | |
| + | conn->lastupkeep = *pnow; |
| /* briefly attach for action */ | |
| Curl_attach_connection(admin, conn, FALSE); | |
| result = Curl_conn_keep_alive(admin, conn); | |
| - | conn->keepalive = *Curl_pgrs_now(admin); |
| Curl_detach_connection(admin); | |
| if(result && !CONN_INUSE(conn)) { | |
| @@ -108,7 +108,7 @@ timediff_t Curl_timeleft_ms(struct Curl_easy *data) | |
| return timeleft_now_ms(data, Curl_pgrs_now(data)); | |
| } | |
| - | void Curl_shutdown_start(struct Curl_easy *data, int sockindex, |
| + | void Curl_shutdown_start(struct Curl_easy *data, int8_t sockindex, |
| int timeout_ms) | |
| { | |
| struct connectdata *conn = data->conn; | |
| @@ -128,7 +128,7 @@ void Curl_shutdown_start(struct Curl_easy *data, int sockindex, | |
| timediff_t Curl_shutdown_timeleft(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| timediff_t left_ms; | |
| @@ -146,7 +146,7 @@ timediff_t Curl_conn_shutdown_timeleft(struct Curl_easy *data, | |
| struct connectdata *conn) | |
| { | |
| timediff_t left_ms = 0, ms; | |
| - | int i; |
| + | int8_t i; |
| for(i = 0; conn->shutdown.timeout_ms && (i < 2); ++i) { | |
| if(!conn->shutdown.start[i].tv_sec) | |
| @@ -158,13 +158,13 @@ timediff_t Curl_conn_shutdown_timeleft(struct Curl_easy *data, | |
| return left_ms; | |
| } | |
| - | void Curl_shutdown_clear(struct Curl_easy *data, int sockindex) |
| + | void Curl_shutdown_clear(struct Curl_easy *data, int8_t sockindex) |
| { | |
| struct curltime *pt = &data->conn->shutdown.start[sockindex]; | |
| memset(pt, 0, sizeof(*pt)); | |
| } | |
| - | bool Curl_shutdown_started(struct connectdata *conn, int sockindex) |
| + | bool Curl_shutdown_started(struct connectdata *conn, int8_t sockindex) |
| { | |
| const struct curltime *pt = &conn->shutdown.start[sockindex]; | |
| return (pt->tv_sec > 0) || (pt->tv_usec > 0); | |
| @@ -232,7 +232,7 @@ void Curl_conncontrol(struct connectdata *conn, int ctrl) | |
| CURLcode Curl_conn_setup(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| int ssl_mode) | |
| { | |
| struct Curl_peer *first_peer = Curl_conn_get_first_peer(conn, sockindex); | |
| @@ -326,7 +326,7 @@ static void conn_report_connect_stats(struct Curl_cfilter *cf, | |
| } | |
| CURLcode Curl_conn_connect(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| bool blocking, | |
| bool *done) | |
| { | |
| @@ -385,7 +385,7 @@ CURLcode Curl_conn_connect(struct Curl_easy *data, | |
| * socket and ip related information. */ | |
| Curl_conn_cntrl_update_info(data, data->conn); | |
| conn_report_connect_stats(cf, data); | |
| - | data->conn->keepalive = *Curl_pgrs_now(data); |
| + | data->conn->lastupkeep = *Curl_pgrs_now(data); |
| VERBOSE(result = conn_connect_trace(data, cf)); | |
| VERBOSE(Curl_conn_trc_filters(data, sockindex, "connected")); | |
| Curl_conn_remove_setup_filters(data, sockindex); | |
| @@ -458,14 +458,14 @@ void Curl_conn_set_multiplex(struct connectdata *conn) | |
| } | |
| struct Curl_peer *Curl_conn_get_origin(struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| return (sockindex == SECONDARYSOCKET) ? | |
| conn->origin2 : conn->origin; | |
| } | |
| struct Curl_peer *Curl_conn_get_destination(struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| return (sockindex == SECONDARYSOCKET) ? | |
| (conn->via_peer2 ? conn->via_peer2 : conn->origin2) : | |
| @@ -473,7 +473,7 @@ struct Curl_peer *Curl_conn_get_destination(struct connectdata *conn, | |
| } | |
| struct Curl_peer *Curl_conn_get_first_peer(struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| #ifndef CURL_DISABLE_PROXY | |
| if(conn->socks_proxy.peer) | |
| @@ -41,24 +41,24 @@ timediff_t Curl_timeleft_ms(struct Curl_easy *data); | |
| #define DEFAULT_SHUTDOWN_TIMEOUT_MS (2 * 1000) | |
| - | void Curl_shutdown_start(struct Curl_easy *data, int sockindex, |
| + | void Curl_shutdown_start(struct Curl_easy *data, int8_t sockindex, |
| int timeout_ms); | |
| /* return how much time there is left to shutdown the connection at | |
| * sockindex. Returns 0 if there is no limit or shutdown has not started. */ | |
| timediff_t Curl_shutdown_timeleft(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /* return how much time there is left to shutdown the connection. | |
| * Returns 0 if there is no limit or shutdown has not started. */ | |
| timediff_t Curl_conn_shutdown_timeleft(struct Curl_easy *data, | |
| struct connectdata *conn); | |
| - | void Curl_shutdown_clear(struct Curl_easy *data, int sockindex); |
| + | void Curl_shutdown_clear(struct Curl_easy *data, int8_t sockindex); |
| /* TRUE iff shutdown has been started */ | |
| - | bool Curl_shutdown_started(struct connectdata *conn, int sockindex); |
| + | bool Curl_shutdown_started(struct connectdata *conn, int8_t sockindex); |
| /* | |
| * Used to extract socket and connectdata struct for the most recent | |
| @@ -95,7 +95,7 @@ void Curl_conncontrol(struct connectdata *conn, int ctrl); | |
| */ | |
| CURLcode Curl_conn_setup(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| int ssl_mode); | |
| /** | |
| @@ -105,7 +105,7 @@ CURLcode Curl_conn_setup(struct Curl_easy *data, | |
| * When not `blocking`, calls may return without error and `*done != TRUE`, | |
| * while the individual filters negotiated the connection. | |
| */ | |
| - | CURLcode Curl_conn_connect(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_conn_connect(struct Curl_easy *data, int8_t sockindex, |
| bool blocking, bool *done); | |
| /* Set conn to allow multiplexing. */ | |
| @@ -113,17 +113,17 @@ void Curl_conn_set_multiplex(struct connectdata *conn); | |
| /* Get the origin peer at sockindex. */ | |
| struct Curl_peer *Curl_conn_get_origin(struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /* Get the peer the connection actually connects to at sockindex. | |
| * Often the same as "origin", but can be redirected via "connect-to" | |
| * or "alt-svc". May tunnel through proxies. */ | |
| struct Curl_peer *Curl_conn_get_destination(struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /* Get the peer curl connects its socket to. | |
| * Can be origin, "connect-to" or the first proxy. */ | |
| struct Curl_peer *Curl_conn_get_first_peer(struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| #endif /* HEADER_CURL_CONNECT_H */ | |
| @@ -1111,6 +1111,7 @@ void curl_easy_reset(CURL *curl) | |
| if(CURL_EAPI_ENTER(&guard, curl, easy_reset, NULL)) { | |
| struct Curl_easy *data = curl; | |
| + | data->state.lastconnect_id = -1; /* clear remembered connection id */ |
| Curl_req_hard_reset(&data->req, data); | |
| Curl_hash_clean(&data->meta_hash); | |
| @@ -1128,8 +1129,6 @@ void curl_easy_reset(CURL *curl) | |
| Curl_initinfo(data); | |
| data->progress.hide = TRUE; | |
| - | data->state.current_speed = -1; /* init to negative == impossible */ |
| - | data->state.lastconnect_id = -1; /* clear remembered connection id */ |
| /* zero out authentication data: */ | |
| memset(&data->state.authhost, 0, sizeof(struct auth)); | |
| @@ -590,7 +590,7 @@ static bool ftp_endofresp(struct Curl_easy *data, struct connectdata *conn, | |
| static CURLcode ftp_readresp(struct Curl_easy *data, | |
| struct ftp_conn *ftpc, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct pingpong *pp, | |
| int *ftpcodep, /* return the ftp-code if done */ | |
| size_t *size) /* size of the response */ | |
| @@ -2784,7 +2784,7 @@ struct Curl_cftype Curl_cft_nghttp2 = { | |
| static CURLcode http2_cfilter_add(struct Curl_cfilter **pcf, | |
| struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| bool via_h1_upgrade) | |
| { | |
| struct Curl_cfilter *cf = NULL; | |
| @@ -2894,7 +2894,7 @@ CURLcode Curl_http2_switch_at(struct Curl_cfilter *cf, struct Curl_easy *data) | |
| } | |
| CURLcode Curl_http2_upgrade(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex, |
| + | struct connectdata *conn, int8_t sockindex, |
| const char *mem, size_t nread) | |
| { | |
| struct Curl_cfilter *cf; | |
| @@ -54,7 +54,7 @@ CURLcode Curl_http2_switch(struct Curl_easy *data); | |
| CURLcode Curl_http2_switch_at(struct Curl_cfilter *cf, struct Curl_easy *data); | |
| CURLcode Curl_http2_upgrade(struct Curl_easy *data, | |
| - | struct connectdata *conn, int sockindex, |
| + | struct connectdata *conn, int8_t sockindex, |
| const char *mem, size_t nread); | |
| void *Curl_nghttp2_malloc(size_t size, void *user_data); | |
| @@ -650,18 +650,19 @@ static void multi_done_locked(struct connectdata *conn, | |
| Curl_dnscache_prune(data); | |
| if(multi_conn_should_close(conn, data, (bool)mdctx->premature)) { | |
| - | CURL_TRC_M(data, "multi_done, terminating conn #%" FMT_OFF_T " to %s, " |
| + | CURL_TRC_M(data, "multi_done, terminating conn #%" FMT_OFF_T " to %s:%u, " |
| "forbid=%d, close=%d, premature=%d, conn_multiplex=%d", | |
| - | conn->connection_id, conn->destination, |
| + | conn->connection_id, conn->origin->user_hostname, |
| + | conn->origin->port, |
| data->set.reuse_forbid, conn->bits.close, mdctx->premature, | |
| Curl_conn_is_multiplex(conn, FIRSTSOCKET)); | |
| connclose(conn); | |
| Curl_conn_close(data, conn, (bool)mdctx->premature); | |
| } | |
| else if(!Curl_conn_get_max_concurrent(data, conn, FIRSTSOCKET)) { | |
| - | CURL_TRC_M(data, "multi_done, conn #%" FMT_OFF_T " to %s was shutdown" |
| + | CURL_TRC_M(data, "multi_done, conn #%" FMT_OFF_T " to %s:%u was shutdown" |
| " by server, not reusing", conn->connection_id, | |
| - | conn->destination); |
| + | conn->origin->user_hostname, conn->origin->port); |
| connclose(conn); | |
| Curl_conn_close(data, conn, (bool)mdctx->premature); | |
| } | |
| @@ -669,8 +670,9 @@ static void multi_done_locked(struct connectdata *conn, | |
| /* the connection is no longer in use by any transfer */ | |
| if(Curl_cpool_conn_now_idle(data, conn)) { | |
| /* connection kept in the cpool */ | |
| - | infof(data, "Connection #%" FMT_OFF_T " to host %s left intact", |
| - | conn->connection_id, conn->destination); |
| + | infof(data, "Connection #%" FMT_OFF_T " to host %s:%u left intact", |
| + | conn->connection_id, conn->origin->user_hostname, |
| + | conn->origin->port); |
| } | |
| else { | |
| /* connection was removed from the cpool and destroyed. */ | |
| @@ -1100,7 +1100,7 @@ static CURLcode client_write(struct Curl_easy *data, | |
| return result; | |
| } | |
| - | static CURLcode oldap_recv(struct Curl_easy *data, int sockindex, char *buf, |
| + | static CURLcode oldap_recv(struct Curl_easy *data, int8_t sockindex, char *buf, |
| size_t len, size_t *pnread) | |
| { | |
| struct connectdata *conn = data->conn; | |
| @@ -222,7 +222,7 @@ CURLcode Curl_pp_sendf(struct Curl_easy *data, struct pingpong *pp, | |
| } | |
| static CURLcode pingpong_read(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| char *buffer, | |
| size_t buflen, | |
| size_t *nread) | |
| @@ -236,7 +236,7 @@ static CURLcode pingpong_read(struct Curl_easy *data, | |
| * Reads a piece of a server response. | |
| */ | |
| CURLcode Curl_pp_readresp(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct pingpong *pp, | |
| int *code, /* return the server code if done */ | |
| size_t *size) /* size of the response */ | |
| @@ -132,7 +132,7 @@ CURLcode Curl_pp_vsendf(struct Curl_easy *data, | |
| * Reads a piece of a server response. | |
| */ | |
| CURLcode Curl_pp_readresp(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct pingpong *pp, | |
| int *code, /* return the server code if done */ | |
| size_t *size); /* size of the response */ | |
| @@ -669,8 +669,8 @@ CURLcode Curl_retry_request(struct Curl_easy *data, char **url) | |
| static void xfer_setup( | |
| struct Curl_easy *data, /* transfer */ | |
| - | int send_idx, /* sockindex to send on or -1 */ |
| - | int recv_idx, /* sockindex to receive on or -1 */ |
| + | int8_t send_idx, /* sockindex to send on or -1 */ |
| + | int8_t recv_idx, /* sockindex to receive on or -1 */ |
| curl_off_t recv_size /* how much to receive, -1 if unknown */ | |
| ) | |
| { | |
| @@ -718,20 +718,20 @@ void Curl_xfer_setup_nop(struct Curl_easy *data) | |
| } | |
| void Curl_xfer_setup_sendrecv(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| curl_off_t recv_size) | |
| { | |
| xfer_setup(data, sockindex, sockindex, recv_size); | |
| } | |
| void Curl_xfer_setup_send(struct Curl_easy *data, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| xfer_setup(data, sockindex, -1, -1); | |
| } | |
| void Curl_xfer_setup_recv(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| curl_off_t recv_size) | |
| { | |
| xfer_setup(data, -1, sockindex, recv_size); | |
| @@ -69,12 +69,12 @@ void Curl_xfer_setup_nop(struct Curl_easy *data); | |
| /* The transfer sends data on the given socket index */ | |
| void Curl_xfer_setup_send(struct Curl_easy *data, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| /* The transfer receives data on the given socket index, the | |
| * amount to receive (or -1 if unknown). */ | |
| void Curl_xfer_setup_recv(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| curl_off_t recv_size); | |
| /* *After* Curl_xfer_setup_xxx(), tell the transfer to shutdown the | |
| @@ -89,7 +89,7 @@ void Curl_xfer_set_shutdown(struct Curl_easy *data, | |
| * the amount to receive or -1 if unknown. | |
| */ | |
| void Curl_xfer_setup_sendrecv(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| curl_off_t recv_size); | |
| /** | |
| @@ -476,7 +476,6 @@ CURLcode Curl_open(struct Curl_easy **curl) | |
| data->mid = UINT32_MAX; | |
| data->master_mid = UINT32_MAX; | |
| data->progress.hide = TRUE; | |
| - | data->state.current_speed = -1; /* init to negative == impossible */ |
| Curl_hash_init(&data->meta_hash, 23, | |
| Curl_hash_str, curlx_str_key_compare, easy_meta_freeentry); | |
| @@ -497,7 +496,7 @@ CURLcode Curl_open(struct Curl_easy **curl) | |
| void Curl_conn_free(struct Curl_easy *data, struct connectdata *conn) | |
| { | |
| - | size_t i; |
| + | int8_t i; |
| DEBUGASSERT(conn); | |
| @@ -505,8 +504,8 @@ void Curl_conn_free(struct Curl_easy *data, struct connectdata *conn) | |
| !conn->bits.shutdown_handler) | |
| conn->scheme->run->disconnect(data, conn, TRUE); | |
| - | for(i = 0; i < CURL_ARRAYSIZE(conn->cfilter); ++i) { |
| - | Curl_conn_cf_discard_all(data, conn, (int)i); |
| + | for(i = 0; i < (int8_t)CURL_ARRAYSIZE(conn->cfilter); ++i) { |
| + | Curl_conn_cf_discard_all(data, conn, i); |
| } | |
| #ifndef CURL_DISABLE_PROXY | |
| @@ -1227,11 +1226,8 @@ static struct connectdata *allocate_conn(struct Curl_easy *data) | |
| conn->connection_id = -1; /* no ID */ | |
| conn->attached_xfers = 0; | |
| - | /* Store creation time to help future close decision making */ |
| - | conn->created = *Curl_pgrs_now(data); |
| - | |
| - | /* Store current time to give a baseline to keepalive connection times. */ |
| - | conn->keepalive = conn->created; |
| + | /* Remember time this connection started */ |
| + | conn->lastused = conn->lastupkeep = conn->created = *Curl_pgrs_now(data); |
| #ifndef CURL_DISABLE_FTP | |
| conn->bits.ftp_use_epsv = data->set.ftp_use_epsv; | |
| @@ -1256,7 +1252,6 @@ static struct connectdata *allocate_conn(struct Curl_easy *data) | |
| it may live on without (this specific) Curl_easy */ | |
| conn->fclosesocket = data->set.fclosesocket; | |
| conn->closesocket_client = data->set.closesocket_client; | |
| - | conn->lastused = conn->created; |
| #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) | |
| conn->gssapi_delegation = data->set.gssapi_delegation; | |
| #endif | |
| @@ -75,7 +75,7 @@ | |
| /* On error return, the value of `pnwritten` has no meaning */ | |
| typedef CURLcode (Curl_send)(struct Curl_easy *data, /* transfer */ | |
| - | int sockindex, /* socketindex */ |
| + | int8_t sockindex, /* socketindex */ |
| const uint8_t *buf, /* data to write */ | |
| size_t len, /* amount to send */ | |
| bool eos, /* last chunk */ | |
| @@ -83,7 +83,7 @@ typedef CURLcode (Curl_send)(struct Curl_easy *data, /* transfer */ | |
| /* On error return, the value of `pnread` has no meaning */ | |
| typedef CURLcode (Curl_recv)(struct Curl_easy *data, /* transfer */ | |
| - | int sockindex, /* socketindex */ |
| + | int8_t sockindex, /* socketindex */ |
| char *buf, /* store data here */ | |
| size_t len, /* max amount to read */ | |
| size_t *pnread); /* how much received */ | |
| @@ -259,53 +259,60 @@ struct ip_quadruple { | |
| * unique for an entire connection. | |
| */ | |
| struct connectdata { | |
| - | struct Curl_llist_node cpool_node; /* conncache lists */ |
| - | struct Curl_llist_node cshutdn_node; /* cshutdn list */ |
| - | |
| - | curl_closesocket_callback fclosesocket; /* function closing the socket(s) */ |
| - | void *closesocket_client; |
| + | curl_off_t connection_id; /* Contains a unique number to make it easier to |
| + | track the connections in the log output */ |
| /* This is used by the connection pool logic. If this returns TRUE, this | |
| handle is still used by one or more easy handles and can only used by any | |
| other easy handle without careful consideration (== only for | |
| multiplexing) and it cannot be used by another multi handle! */ | |
| #define CONN_INUSE(c) (!!(c)->attached_xfers) | |
| + | uint32_t attached_xfers; /* # of attached easy handles */ |
| - | /**** Fields set when inited and not modified again */ |
| - | curl_off_t connection_id; /* Contains a unique number to make it easier to |
| - | track the connections in the log output */ |
| - | char *destination; /* string carrying normalized hostname+port+scope */ |
| - | |
| - | /* `meta_hash` is a general key-value store for implementations |
| - | * with the lifetime of the connection. |
| - | * Elements need to be added with their own destructor to be invoked when |
| - | * the connection is cleaned up (see Curl_hash_add2()).*/ |
| - | struct Curl_hash meta_hash; |
| + | /* A connection cache from a SHARE might be used in several multi handles. |
| + | * We MUST not reuse connections that are running in another multi, |
| + | * for concurrency reasons. That multi might run in another thread. |
| + | * `attached_multi` is set by the first transfer attached and cleared |
| + | * when the last one is detached. |
| + | * NEVER call anything on this multi, check for equality. */ |
| + | struct Curl_multi *attached_multi; |
| /* Who the connection is talking to, ultimately */ | |
| struct Curl_peer *origin; /* connection ultimately talks to this */ | |
| struct Curl_peer *via_peer; /* if set, connection really talks to this */ | |
| struct Curl_peer *origin2; /* origin of SECONDARYSOCKET */ | |
| struct Curl_peer *via_peer2; /* peer of SECONDARYSOCKET */ | |
| - | #ifndef CURL_DISABLE_PROXY |
| - | struct proxy_info socks_proxy; |
| - | struct proxy_info http_proxy; |
| - | #endif |
| struct Curl_creds *creds; /* When connection itself is tied to credentials */ | |
| struct Curl_peer *creds_origin; /* origin tied credentials are for */ | |
| - | char *options; /* options string, allocated */ |
| + | const struct Curl_scheme *scheme; /* Connection's real protocol handler */ |
| + | const struct Curl_scheme *given; /* The protocol first given */ |
| + | |
| + | /* `meta_hash` is a general key-value store for implementations |
| + | * with the lifetime of the connection. |
| + | * Elements need to be added with their own destructor to be invoked when |
| + | * the connection is cleaned up (see Curl_hash_add2()).*/ |
| + | struct Curl_hash meta_hash; |
| + | |
| + | struct Curl_llist_node cpool_node; /* conncache lists */ |
| + | struct Curl_llist_node cshutdn_node; /* cshutdn list */ |
| + | char *destination; /* hostname+port, used in conncache */ |
| + | |
| struct curltime created; /* creation time */ | |
| struct curltime lastused; /* when returned to the connection pool as idle */ | |
| struct curltime lastchecked; /* when last checked alive status */ | |
| + | struct curltime lastupkeep; /* when last done conn_upkeep */ |
| + | |
| + | #ifndef CURL_DISABLE_PROXY |
| + | struct proxy_info socks_proxy; |
| + | struct proxy_info http_proxy; |
| + | #endif |
| - | /* A connection can have one or two sockets and connection filters. |
| - | * The protocol using the 2nd one is FTP for CONTROL+DATA sockets */ |
| - | curl_socket_t sock[2]; |
| struct Curl_cfilter *cfilter[2]; /* connection filters */ | |
| Curl_recv *recv[2]; | |
| Curl_send *send[2]; | |
| - | int recv_idx; /* on which socket index to receive, default 0 */ |
| - | int send_idx; /* on which socket index to send, default 0 */ |
| + | /* A connection can have one or two sockets and connection filters. |
| + | * The protocol using the 2nd one is FTP for CONTROL+DATA sockets */ |
| + | curl_socket_t sock[2]; |
| #define CONN_SOCK_IDX_VALID(i) (((i) >= 0) && ((i) < 2)) | |
| @@ -314,27 +321,14 @@ struct connectdata { | |
| timediff_t timeout_ms; /* 0 means no timeout */ | |
| } shutdown; | |
| + | curl_closesocket_callback fclosesocket; /* function closing the socket(s) */ |
| + | void *closesocket_client; |
| + | |
| struct ssl_primary_config ssl_config; | |
| #ifndef CURL_DISABLE_PROXY | |
| struct ssl_primary_config proxy_ssl_config; | |
| #endif | |
| - | struct ConnectBits bits; /* various state-flags for this connection */ |
| - | |
| - | const struct Curl_scheme *scheme; /* Connection's protocol handler */ |
| - | const struct Curl_scheme *given; /* The protocol first given */ |
| - | |
| - | /* Protocols can use a custom keepalive mechanism to keep connections alive. |
| - | This allows those protocols to track the last time the keepalive mechanism |
| - | was used on this connection. */ |
| - | struct curltime keepalive; |
| - | |
| - | /* A connection cache from a SHARE might be used in several multi handles. |
| - | * We MUST not reuse connections that are running in another multi, |
| - | * for concurrency reasons. That multi might run in another thread. |
| - | * `attached_multi` is set by the first transfer attached and cleared |
| - | * when the last one is detached. |
| - | * NEVER call anything on this multi, check for equality. */ |
| - | struct Curl_multi *attached_multi; |
| + | char *options; /* options string, allocated */ |
| /*************** Request - specific items ************/ | |
| #if defined(USE_WINDOWS_SSPI) && defined(SECPKG_ATTR_ENDPOINT_BINDINGS) | |
| @@ -360,13 +354,14 @@ struct connectdata { | |
| #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) | |
| int socks5_gssapi_enctype; | |
| #endif | |
| - | uint32_t attached_xfers; /* # of attached easy handles */ |
| #ifdef USE_IPV6 | |
| uint32_t scope_id; /* Scope id for IPv6 */ | |
| #endif | |
| uint16_t localportrange; | |
| uint16_t localport; | |
| + | int8_t recv_idx; /* on which socket index to receive, default 0 */ |
| + | int8_t send_idx; /* on which socket index to send, default 0 */ |
| uint8_t transport_wanted; /* one of the TRNSPRT_* defines. Not necessarily | |
| the transport the connection ends using due to Alt-Svc and happy | |
| eyeballing. Use Curl_conn_get_transport() for actual value once the | |
| @@ -376,6 +371,8 @@ struct connectdata { | |
| * 0 at start, then one of 09, 10, 11, etc. */ | |
| uint8_t httpversion_seen; | |
| uint8_t gssapi_delegation; /* inherited from set.gssapi_delegation */ | |
| + | |
| + | struct ConnectBits bits; /* various state-flags for this connection */ |
| }; | |
| #ifndef CURL_DISABLE_PROXY | |
| @@ -528,18 +525,7 @@ struct urlpieces { | |
| }; | |
| struct UrlState { | |
| - | /* buffers to store authentication data in, as parsed from input options */ |
| - | struct curltime keeps_speed; /* for the progress meter really */ |
| - | |
| curl_off_t lastconnect_id; /* The last assigned connection or -1 */ | |
| - | struct dynbuf headerb; /* buffer to store headers in */ |
| - | #ifndef CURL_DISABLE_HSTS |
| - | struct curl_slist *hstslist; /* list of HSTS files set by |
| - | curl_easy_setopt(HSTS) calls */ |
| - | #endif |
| - | curl_off_t current_speed; /* the ProgressShow() function sets this, |
| - | bytes / second */ |
| - | |
| /* Origin of the initial (e.g. not followed) request of a transfer. | |
| Credentials from CURLOPT_* are only valid for this origin. | |
| Always set once a transfer starts searching for connections. */ | |
| @@ -548,6 +534,13 @@ struct UrlState { | |
| * requests. */ | |
| struct Curl_peer *origin; | |
| + | struct curltime keeps_speed; /* for the progress meter really */ |
| + | struct dynbuf headerb; /* buffer to store headers in */ |
| + | #ifndef CURL_DISABLE_HSTS |
| + | struct curl_slist *hstslist; /* list of HSTS files set by |
| + | curl_easy_setopt(HSTS) calls */ |
| + | #endif |
| + | |
| int os_errno; /* filled in with errno whenever an error occurs */ | |
| int requests; /* request counter: redirects + authentication retakes */ | |
| #ifdef HAVE_SIGNAL | |
| @@ -598,9 +591,6 @@ struct UrlState { | |
| curl_mimepart *formp; /* storage for old API form-posting, allocated on | |
| demand */ | |
| #endif | |
| - | size_t trailers_bytes_sent; |
| - | struct dynbuf trailers_buf; /* a buffer containing the compiled trailing |
| - | headers */ |
| struct Curl_llist httphdrs; /* received headers */ | |
| struct curl_header headerout[2]; /* for external purposes */ | |
| #endif | |
| @@ -453,7 +453,7 @@ out: | |
| * The filter will resolve the peer on the first connect attempt. */ | |
| static CURLcode cf_dns_add(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer, | |
| uint8_t dns_queries, | |
| uint8_t transport) | |
| @@ -502,7 +502,7 @@ static CURLcode cf_dns_insert_after(struct Curl_cfilter *cf_at, | |
| static CURLcode cf_dns_add_resolve(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer, | |
| uint8_t dns_queries, | |
| uint8_t transport) | |
| @@ -552,7 +552,7 @@ static CURLcode cf_dns_add_resolve(struct Curl_easy *data, | |
| CURLcode Curl_conn_dns_add_addr_resolve(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer, | |
| uint8_t dns_queries, | |
| uint8_t transport) | |
| @@ -571,7 +571,7 @@ CURLcode Curl_conn_dns_add_addr_resolve(struct Curl_easy *data, | |
| * - error returned by the DNS resolv | |
| */ | |
| CURLcode Curl_conn_dns_addr_result(struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer) | |
| { | |
| struct Curl_cfilter *cf = conn->cfilter[sockindex]; | |
| @@ -595,7 +595,7 @@ CURLcode Curl_conn_dns_addr_result(struct connectdata *conn, | |
| */ | |
| const struct Curl_addrinfo *Curl_conn_dns_get_ai(struct Curl_easy *data, | |
| struct Curl_peer *peer, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| int ai_family, | |
| unsigned int index) | |
| { | |
| @@ -633,7 +633,7 @@ const struct Curl_addrinfo *Curl_conn_dns_get_ai(struct Curl_easy *data, | |
| #ifdef USE_HTTPSRR | |
| CURLcode Curl_conn_dns_add_https_resolve(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer) | |
| { | |
| return cf_dns_add_resolve(data, conn, sockindex, peer, | |
| @@ -646,7 +646,7 @@ CURLcode Curl_conn_dns_add_https_resolve(struct Curl_easy *data, | |
| */ | |
| const struct Curl_https_rrinfo * | |
| Curl_conn_dns_get_https(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer) | |
| { | |
| struct Curl_cfilter *cf = data->conn->cfilter[sockindex]; | |
| @@ -666,7 +666,7 @@ Curl_conn_dns_get_https(struct Curl_easy *data, | |
| } | |
| bool Curl_conn_dns_resolved_https(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer) | |
| { | |
| struct Curl_cfilter *cf = data->conn->cfilter[sockindex]; | |
| @@ -33,33 +33,33 @@ struct Curl_peer; | |
| CURLcode Curl_conn_dns_add_addr_resolve(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer, | |
| uint8_t dns_queries, | |
| uint8_t transport); | |
| CURLcode Curl_conn_dns_addr_result(struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer); | |
| const struct Curl_addrinfo *Curl_conn_dns_get_ai(struct Curl_easy *data, | |
| struct Curl_peer *peer, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| int ai_family, | |
| unsigned int index); | |
| #ifdef USE_HTTPSRR | |
| CURLcode Curl_conn_dns_add_https_resolve(struct Curl_easy *data, | |
| struct connectdata *conn, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer); | |
| const struct Curl_https_rrinfo * | |
| Curl_conn_dns_get_https(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer); | |
| bool Curl_conn_dns_resolved_https(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct Curl_peer *peer); | |
| #else | |
| #define Curl_conn_dns_get_https(a, b, c) NULL | |
| @@ -1760,7 +1760,7 @@ static int myssh_in_SFTP_QUOTE_STAT(struct Curl_easy *data, | |
| return SSH_NO_ERROR; | |
| } | |
| - | static void conn_forget_socket(struct Curl_easy *data, int sockindex) |
| + | static void conn_forget_socket(struct Curl_easy *data, int8_t sockindex) |
| { | |
| struct connectdata *conn = data->conn; | |
| if(conn && CONN_SOCK_IDX_VALID(sockindex)) { | |
| @@ -2778,7 +2778,7 @@ static CURLcode scp_done(struct Curl_easy *data, CURLcode status, | |
| return myssh_done(data, sshc, status); | |
| } | |
| - | static CURLcode scp_send(struct Curl_easy *data, int sockindex, |
| + | static CURLcode scp_send(struct Curl_easy *data, int8_t sockindex, |
| const uint8_t *mem, size_t len, bool eos, | |
| size_t *pnwritten) | |
| { | |
| @@ -2812,7 +2812,7 @@ static CURLcode scp_send(struct Curl_easy *data, int sockindex, | |
| return CURLE_OK; | |
| } | |
| - | static CURLcode scp_recv(struct Curl_easy *data, int sockindex, |
| + | static CURLcode scp_recv(struct Curl_easy *data, int8_t sockindex, |
| char *mem, size_t len, size_t *pnread) | |
| { | |
| struct connectdata *conn = data->conn; | |
| @@ -2938,7 +2938,7 @@ static CURLcode sftp_done(struct Curl_easy *data, CURLcode status, | |
| } | |
| /* return number of sent bytes */ | |
| - | static CURLcode sftp_send(struct Curl_easy *data, int sockindex, |
| + | static CURLcode sftp_send(struct Curl_easy *data, int8_t sockindex, |
| const uint8_t *mem, size_t len, bool eos, | |
| size_t *pnwritten) | |
| { | |
| @@ -3019,7 +3019,7 @@ static CURLcode sftp_send(struct Curl_easy *data, int sockindex, | |
| * Return number of received (decrypted) bytes | |
| * or <0 on error | |
| */ | |
| - | static CURLcode sftp_recv(struct Curl_easy *data, int sockindex, |
| + | static CURLcode sftp_recv(struct Curl_easy *data, int8_t sockindex, |
| char *mem, size_t len, size_t *pnread) | |
| { | |
| struct connectdata *conn = data->conn; | |
| @@ -3278,7 +3278,7 @@ static ssize_t ssh_tls_recv(libssh2_socket_t sock, void *buffer, | |
| size_t length, int flags, void **abstract) | |
| { | |
| struct Curl_easy *data = (struct Curl_easy *)*abstract; | |
| - | int sockindex = Curl_conn_sockindex(data, sock); |
| + | int8_t sockindex = Curl_conn_sockindex(data, sock); |
| size_t nread; | |
| CURLcode result; | |
| struct connectdata *conn = data->conn; | |
| @@ -3306,7 +3306,7 @@ static ssize_t ssh_tls_send(libssh2_socket_t sock, const void *buffer, | |
| size_t length, int flags, void **abstract) | |
| { | |
| struct Curl_easy *data = (struct Curl_easy *)*abstract; | |
| - | int sockindex = Curl_conn_sockindex(data, sock); |
| + | int8_t sockindex = Curl_conn_sockindex(data, sock); |
| size_t nwrite; | |
| CURLcode result; | |
| struct connectdata *conn = data->conn; | |
| @@ -3614,7 +3614,7 @@ static CURLcode scp_done(struct Curl_easy *data, CURLcode status, | |
| return ssh_done(data, status); | |
| } | |
| - | static CURLcode scp_send(struct Curl_easy *data, int sockindex, |
| + | static CURLcode scp_send(struct Curl_easy *data, int8_t sockindex, |
| const uint8_t *mem, size_t len, bool eos, | |
| size_t *pnwritten) | |
| { | |
| @@ -3646,7 +3646,7 @@ static CURLcode scp_send(struct Curl_easy *data, int sockindex, | |
| return result; | |
| } | |
| - | static CURLcode scp_recv(struct Curl_easy *data, int sockindex, |
| + | static CURLcode scp_recv(struct Curl_easy *data, int8_t sockindex, |
| char *mem, size_t len, size_t *pnread) | |
| { | |
| struct connectdata *conn = data->conn; | |
| @@ -3772,7 +3772,7 @@ static CURLcode sftp_done(struct Curl_easy *data, CURLcode status, | |
| } | |
| /* return number of sent bytes */ | |
| - | static CURLcode sftp_send(struct Curl_easy *data, int sockindex, |
| + | static CURLcode sftp_send(struct Curl_easy *data, int8_t sockindex, |
| const uint8_t *mem, size_t len, bool eos, | |
| size_t *pnwritten) | |
| { | |
| @@ -3803,7 +3803,7 @@ static CURLcode sftp_send(struct Curl_easy *data, int sockindex, | |
| * Return number of received (decrypted) bytes | |
| * or <0 on error | |
| */ | |
| - | static CURLcode sftp_recv(struct Curl_easy *data, int sockindex, |
| + | static CURLcode sftp_recv(struct Curl_easy *data, int8_t sockindex, |
| char *mem, size_t len, size_t *pnread) | |
| { | |
| struct connectdata *conn = data->conn; | |
| @@ -5273,7 +5273,7 @@ out: | |
| } | |
| static CURLcode ossl_get_channel_binding(struct Curl_easy *data, | |
| - | int sockindex, |
| + | int8_t sockindex, |
| struct dynbuf *binding) | |
| { | |
| X509 *cert; | |
| @@ -215,7 +215,7 @@ static void cf_ctx_free(struct ssl_connect_data *ctx) | |
| } | |
| } | |
| - | CURLcode Curl_ssl_get_channel_binding(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_ssl_get_channel_binding(struct Curl_easy *data, int8_t sockindex, |
| struct dynbuf *binding) | |
| { | |
| if(Curl_ssl->get_channel_binding) | |
| @@ -1390,7 +1390,7 @@ static CURLcode cf_ssl_peer_init(struct Curl_cfilter *cf, | |
| CURLcode Curl_ssl_cfilter_add(struct Curl_easy *data, | |
| struct Curl_peer *origin, | |
| struct connectdata *conn, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| struct Curl_cfilter *cf; | |
| struct Curl_peer *peer = (sockindex == SECONDARYSOCKET) ? | |
| @@ -1552,7 +1552,7 @@ out: | |
| } | |
| CURLcode Curl_ssl_cfilter_remove(struct Curl_easy *data, | |
| - | int sockindex, bool send_shutdown) |
| + | int8_t sockindex, bool send_shutdown) |
| { | |
| struct Curl_cfilter *cf, *head; | |
| CURLcode result = CURLE_OK; | |
| @@ -1779,7 +1779,7 @@ CURLcode Curl_on_session_reuse(struct Curl_cfilter *cf, | |
| struct Curl_ssl_session *Curl_ssl_get_cf_session(struct Curl_easy *data, | |
| const struct Curl_cftype *cft, | |
| - | int sockindex) |
| + | int8_t sockindex) |
| { | |
| if(data->conn && | |
| #ifndef CURL_DISABLE_PROXY | |
| @@ -171,7 +171,7 @@ bool Curl_ssl_cert_status_request(void); | |
| * If channel binding is not supported, binding stays empty and CURLE_OK is | |
| * returned. | |
| */ | |
| - | CURLcode Curl_ssl_get_channel_binding(struct Curl_easy *data, int sockindex, |
| + | CURLcode Curl_ssl_get_channel_binding(struct Curl_easy *data, int8_t sockindex, |
| struct dynbuf *binding); | |
| #define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */ | |
| @@ -179,7 +179,7 @@ CURLcode Curl_ssl_get_channel_binding(struct Curl_easy *data, int sockindex, | |
| CURLcode Curl_ssl_cfilter_add(struct Curl_easy *data, | |
| struct Curl_peer *origin, | |
| struct connectdata *conn, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| CURLcode Curl_cf_ssl_insert_after(struct Curl_cfilter *cf_at, | |
| struct Curl_easy *data, | |
| @@ -187,7 +187,7 @@ CURLcode Curl_cf_ssl_insert_after(struct Curl_cfilter *cf_at, | |
| struct Curl_peer *peer); | |
| CURLcode Curl_ssl_cfilter_remove(struct Curl_easy *data, | |
| - | int sockindex, bool send_shutdown); |
| + | int8_t sockindex, bool send_shutdown); |
| #ifndef CURL_DISABLE_PROXY | |
| CURLcode Curl_cf_ssl_proxy_insert_after(struct Curl_cfilter *cf_at, | |
| @@ -184,7 +184,7 @@ struct Curl_ssl { | |
| CURLcode (*send_plain)(struct Curl_cfilter *cf, struct Curl_easy *data, | |
| const void *mem, size_t len, size_t *pnwritten); | |
| - | CURLcode (*get_channel_binding)(struct Curl_easy *data, int sockindex, |
| + | CURLcode (*get_channel_binding)(struct Curl_easy *data, int8_t sockindex, |
| struct dynbuf *binding); | |
| }; | |
| @@ -209,7 +209,7 @@ CURLcode Curl_on_session_reuse(struct Curl_cfilter *cf, | |
| * data's connection at `sockindex` or NULL if not found/available. */ | |
| struct Curl_ssl_session *Curl_ssl_get_cf_session(struct Curl_easy *data, | |
| const struct Curl_cftype *cft, | |
| - | int sockindex); |
| + | int8_t sockindex); |
| #endif /* USE_SSL */ | |