From: Timo Sirainen Date: Tue, 27 Jun 2023 12:27:27 +0000 (+0300) Subject: lib-http: Remove settings from http_client_context X-Git-Tag: 2.4.1~1459 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e47efd8217901c3cdba33d0802c52d1ae2b97dc8;p=thirdparty%2Fdovecot%2Fcore.git lib-http: Remove settings from http_client_context These weren't actually used anywhere outside unit tests. The settings were always empty and overridden for the actual http_client. --- diff --git a/src/lib-http/http-client-peer.c b/src/lib-http/http-client-peer.c index fc18496f35..4484169e5c 100644 --- a/src/lib-http/http-client-peer.c +++ b/src/lib-http/http-client-peer.c @@ -323,9 +323,9 @@ http_client_peer_shared_create(struct http_client_context *cctx, DLLIST_PREPEND(&cctx->peers_list, pshared); pshared->backoff_initial_time_msecs = - cctx->set.connect_backoff_time_msecs; + HTTP_CLIENT_DEFAULT_BACKOFF_TIME_MSECS; pshared->backoff_max_time_msecs = - cctx->set.connect_backoff_max_time_msecs; + HTTP_CLIENT_DEFAULT_BACKOFF_MAX_TIME_MSECS; e_debug(pshared->event, "Peer created"); return pshared; diff --git a/src/lib-http/http-client-private.h b/src/lib-http/http-client-private.h index 1e6a8b0c44..4b1247c421 100644 --- a/src/lib-http/http-client-private.h +++ b/src/lib-http/http-client-private.h @@ -397,8 +397,6 @@ struct http_client_context { struct event *event; struct ioloop *ioloop; - struct http_client_settings set; - struct dns_client *dns_client; const char *dns_client_socket_path; unsigned int dns_ttl_msecs; diff --git a/src/lib-http/http-client.c b/src/lib-http/http-client.c index 43a848e85e..97baf26c86 100644 --- a/src/lib-http/http-client.c +++ b/src/lib-http/http-client.c @@ -130,7 +130,7 @@ http_client_init_shared(struct http_client_context *cctx, http_client_context_ref(cctx); log_prefix = t_strdup_printf("http-client[%u]: ", id); } else { - client->cctx = cctx = http_client_context_create(set); + client->cctx = cctx = http_client_context_create(); log_prefix = "http-client: "; } @@ -142,13 +142,9 @@ http_client_init_shared(struct http_client_context *cctx, event_drop_parent_log_prefixes(client->event, 1); } event_add_category(client->event, &event_category_http_client); - event_set_forced_debug(client->event, - (set->debug || - (cctx != NULL && cctx->set.debug))); + event_set_forced_debug(client->event, set->debug); event_set_append_log_prefix(client->event, log_prefix); - /* Merge provided settings with context defaults */ - client->set = cctx->set; client->set.dns_client = set->dns_client; client->set.dns_client_socket_path = p_strdup_empty(pool, set->dns_client_socket_path); @@ -184,22 +180,24 @@ http_client_init_shared(struct http_client_context *cctx, if (set->max_idle_time_msecs > 0) client->set.max_idle_time_msecs = set->max_idle_time_msecs; - if (set->max_parallel_connections > 0) - client->set.max_parallel_connections = set->max_parallel_connections; - if (set->max_pipelined_requests > 0) - client->set.max_pipelined_requests = set->max_pipelined_requests; + client->set.max_pipelined_requests = + (set->max_pipelined_requests > 0 ? + set->max_pipelined_requests : 1); + client->set.max_parallel_connections = + (set->max_parallel_connections > 0 ? + set->max_parallel_connections : 1); if (set->max_attempts > 0) client->set.max_attempts = set->max_attempts; if (set->max_connect_attempts > 0) client->set.max_connect_attempts = set->max_connect_attempts; - if (set->connect_backoff_time_msecs > 0) { - client->set.connect_backoff_time_msecs = - set->connect_backoff_time_msecs; - } - if (set->connect_backoff_max_time_msecs > 0) { - client->set.connect_backoff_max_time_msecs = - set->connect_backoff_max_time_msecs; - } + client->set.connect_backoff_time_msecs = + set->connect_backoff_time_msecs > 0 ? + set->connect_backoff_time_msecs : + HTTP_CLIENT_DEFAULT_BACKOFF_TIME_MSECS; + client->set.connect_backoff_max_time_msecs = + set->connect_backoff_max_time_msecs > 0 ? + set->connect_backoff_max_time_msecs : + HTTP_CLIENT_DEFAULT_BACKOFF_MAX_TIME_MSECS; client->set.no_auto_redirect = client->set.no_auto_redirect || set->no_auto_redirect; client->set.no_auto_retry = @@ -212,8 +210,9 @@ http_client_init_shared(struct http_client_context *cctx, client->set.request_absolute_timeout_msecs = set->request_absolute_timeout_msecs; } - if (set->request_timeout_msecs > 0) - client->set.request_timeout_msecs = set->request_timeout_msecs; + client->set.request_timeout_msecs = set->request_timeout_msecs > 0 ? + set->request_timeout_msecs : + HTTP_CLIENT_DEFAULT_REQUEST_TIMEOUT_MSECS; if (set->connect_timeout_msecs > 0) client->set.connect_timeout_msecs = set->connect_timeout_msecs; if (set->soft_connect_timeout_msecs > 0) @@ -438,92 +437,21 @@ void http_client_remove_request_error(struct http_client *client, * Client shared context */ -struct http_client_context * -http_client_context_create(const struct http_client_settings *set) +struct http_client_context *http_client_context_create(void) { struct http_client_context *cctx; pool_t pool; - size_t pool_size; - pool_size = (set->ssl != NULL) ? 8192 : 1024; /* certs will be >4K */ - pool = pool_alloconly_create("http client context", pool_size); + pool = pool_alloconly_create("http client context", 1024); cctx = p_new(pool, struct http_client_context, 1); cctx->pool = pool; cctx->refcount = 1; cctx->ioloop = current_ioloop; - cctx->event = event_create(set->event_parent); + cctx->event = event_create(NULL); event_add_category(cctx->event, &event_category_http_client); - event_set_forced_debug(cctx->event, set->debug); event_set_append_log_prefix(cctx->event, "http-client: "); - cctx->set.dns_client = set->dns_client; - cctx->set.dns_client_socket_path = - p_strdup_empty(pool, set->dns_client_socket_path); - cctx->set.dns_ttl_msecs = (set->dns_ttl_msecs == 0 ? - HTTP_CLIENT_DEFAULT_DNS_TTL_MSECS : set->dns_ttl_msecs); - cctx->set.user_agent = p_strdup_empty(pool, set->user_agent); - cctx->set.rawlog_dir = p_strdup_empty(pool, set->rawlog_dir); - - if (set->ssl != NULL) { - cctx->set.ssl = set->ssl; - pool_ref(cctx->set.ssl->pool); - } - - if (set->proxy_socket_path != NULL && - *set->proxy_socket_path != '\0') { - cctx->set.proxy_socket_path = - p_strdup(pool, set->proxy_socket_path); - } else if (set->proxy_url != NULL) { - cctx->set.proxy_url = http_url_clone(pool, set->proxy_url); - } - if (set->proxy_username != NULL && *set->proxy_username != '\0') { - cctx->set.proxy_username = - p_strdup_empty(pool, set->proxy_username); - cctx->set.proxy_password = - p_strdup(pool, set->proxy_password); - } else if (set->proxy_url != NULL) { - cctx->set.proxy_username = - p_strdup_empty(pool, set->proxy_url->user); - cctx->set.proxy_password = - p_strdup(pool, set->proxy_url->password); - } - - cctx->set.max_idle_time_msecs = set->max_idle_time_msecs; - cctx->set.max_pipelined_requests = - (set->max_pipelined_requests > 0 ? - set->max_pipelined_requests : 1); - cctx->set.max_parallel_connections = - (set->max_parallel_connections > 0 ? - set->max_parallel_connections : 1); - cctx->set.max_attempts = set->max_attempts; - cctx->set.max_connect_attempts = set->max_connect_attempts; - cctx->set.connect_backoff_time_msecs = - (set->connect_backoff_time_msecs == 0 ? - HTTP_CLIENT_DEFAULT_BACKOFF_TIME_MSECS : - set->connect_backoff_time_msecs); - cctx->set.connect_backoff_max_time_msecs = - (set->connect_backoff_max_time_msecs == 0 ? - HTTP_CLIENT_DEFAULT_BACKOFF_MAX_TIME_MSECS : - set->connect_backoff_max_time_msecs); - cctx->set.no_auto_redirect = set->no_auto_redirect; - cctx->set.no_auto_retry = set->no_auto_retry; - cctx->set.no_ssl_tunnel = set->no_ssl_tunnel; - cctx->set.max_redirects = set->max_redirects; - cctx->set.response_hdr_limits = set->response_hdr_limits; - cctx->set.request_absolute_timeout_msecs = - set->request_absolute_timeout_msecs; - cctx->set.request_timeout_msecs = - (set->request_timeout_msecs == 0 ? - HTTP_CLIENT_DEFAULT_REQUEST_TIMEOUT_MSECS : - set->request_timeout_msecs); - cctx->set.connect_timeout_msecs = set->connect_timeout_msecs; - cctx->set.soft_connect_timeout_msecs = set->soft_connect_timeout_msecs; - cctx->set.max_auto_retry_delay_secs = set->max_auto_retry_delay_secs; - cctx->set.socket_send_buffer_size = set->socket_send_buffer_size; - cctx->set.socket_recv_buffer_size = set->socket_recv_buffer_size; - cctx->set.debug = set->debug; - cctx->conn_list = http_client_connection_list_init(); hash_table_create(&cctx->hosts, default_pool, 0, str_hash, strcmp); @@ -586,18 +514,14 @@ static void http_client_context_update_settings(struct http_client_context *cctx) { struct http_client *client; - bool debug; + bool debug = FALSE; - /* Revert back to context settings */ - cctx->dns_client = cctx->set.dns_client; - cctx->dns_client_socket_path = cctx->set.dns_client_socket_path; - cctx->dns_ttl_msecs = cctx->set.dns_ttl_msecs; + /* Revert back to default settings */ + cctx->dns_client = NULL; + cctx->dns_client_socket_path = NULL; + cctx->dns_ttl_msecs = HTTP_CLIENT_DEFAULT_DNS_TTL_MSECS; cctx->dns_lookup_timeout_msecs = - http_client_get_dns_lookup_timeout_msecs(&cctx->set); - debug = cctx->set.debug; - - i_assert(cctx->dns_ttl_msecs > 0); - i_assert(cctx->dns_lookup_timeout_msecs > 0); + HTTP_CLIENT_DEFAULT_DNS_LOOKUP_TIMEOUT_MSECS; /* Override with available client settings */ for (client = cctx->clients_list; client != NULL; @@ -749,9 +673,7 @@ struct http_client_context *http_client_get_global_context(void) if (http_client_global_context != NULL) return http_client_global_context; - struct http_client_settings set; - i_zero(&set); - http_client_global_context = http_client_context_create(&set); + http_client_global_context = http_client_context_create(); /* Keep this a bit higher than lib-ssl-iostream */ lib_atexit_priority(http_client_global_context_free, LIB_ATEXIT_PRIORITY_LOW-1); diff --git a/src/lib-http/http-client.h b/src/lib-http/http-client.h index a2ab2d437f..c47712b15f 100644 --- a/src/lib-http/http-client.h +++ b/src/lib-http/http-client.h @@ -491,8 +491,7 @@ unsigned int http_client_get_pending_request_count(struct http_client *client); * Client shared context */ -struct http_client_context * -http_client_context_create(const struct http_client_settings *set); +struct http_client_context *http_client_context_create(void); void http_client_context_ref(struct http_client_context *cctx); void http_client_context_unref(struct http_client_context **_cctx); diff --git a/src/lib-http/test-http-client.c b/src/lib-http/test-http-client.c index 999e2851e0..9aa1ff7a03 100644 --- a/src/lib-http/test-http-client.c +++ b/src/lib-http/test-http-client.c @@ -400,7 +400,7 @@ int main(int argc, char *argv[]) http_set.debug = TRUE; http_set.rawlog_dir = "/tmp/http-test"; - http_cctx = http_client_context_create(&http_set); + http_cctx = http_client_context_create(); http_client1 = http_client_init_shared(http_cctx, &http_set); http_client2 = http_client_init_shared(http_cctx, &http_set); diff --git a/src/lib-http/test-http-payload.c b/src/lib-http/test-http-payload.c index 4f6ee3ca60..959289d8b1 100644 --- a/src/lib-http/test-http-payload.c +++ b/src/lib-http/test-http-payload.c @@ -1036,7 +1036,7 @@ test_client_create_clients(const struct http_client_settings *client_set) unsigned int i; if (!tset.parallel_clients_global) - http_context = http_client_context_create(client_set); + http_context = http_client_context_create(); if (tset.parallel_clients < 1) tset.parallel_clients = 1;