Mercurial > dovecot > core-2.2
changeset 20352:ebdd1bc4dc16
lib-http: client: Added settings to configure the connection's socket kernel buffer sizes.
This is mainly useful for use in the lib-http test suite.
author | Stephan Bosch <stephan@dovecot.fi> |
---|---|
date | Fri, 20 May 2016 00:04:12 +0200 |
parents | f3e249261abd |
children | e424cc6aa6b9 |
files | src/lib-http/http-client-connection.c src/lib-http/http-client.c src/lib-http/http-client.h |
diffstat | 3 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-http/http-client-connection.c Fri May 20 00:02:49 2016 +0200 +++ b/src/lib-http/http-client-connection.c Fri May 20 00:04:12 2016 +0200 @@ -1184,6 +1184,7 @@ { struct http_client_connection *conn = (struct http_client_connection *)_conn; + const struct http_client_settings *set = &conn->client->set; const char *error; if (!success) { @@ -1192,6 +1193,18 @@ } else { conn->connected_timestamp = ioloop_timeval; http_client_connection_debug(conn, "Connected"); + + if (set->socket_send_buffer_size > 0) { + if (net_set_send_buffer_size(_conn->fd_out, + set->socket_send_buffer_size) < 0) + i_error("net_set_send_buffer_size() failed: %m"); + } + if (set->socket_recv_buffer_size > 0) { + if (net_set_recv_buffer_size(_conn->fd_in, + set->socket_recv_buffer_size) < 0) + i_error("net_set_recv_buffer_size() failed: %m"); + } + if (http_client_peer_addr_is_https(&conn->peer->addr)) { if (http_client_connection_ssl_init(conn, &error) < 0) { http_client_peer_connection_failure(conn->peer, error);
--- a/src/lib-http/http-client.c Fri May 20 00:02:49 2016 +0200 +++ b/src/lib-http/http-client.c Fri May 20 00:04:12 2016 +0200 @@ -149,6 +149,8 @@ client->set.connect_timeout_msecs = set->connect_timeout_msecs; client->set.soft_connect_timeout_msecs = set->soft_connect_timeout_msecs; client->set.max_auto_retry_delay = set->max_auto_retry_delay; + client->set.socket_send_buffer_size = set->socket_send_buffer_size; + client->set.socket_recv_buffer_size = set->socket_recv_buffer_size; client->set.debug = set->debug; i_array_init(&client->delayed_failing_requests, 1);
--- a/src/lib-http/http-client.h Fri May 20 00:02:49 2016 +0200 +++ b/src/lib-http/http-client.h Fri May 20 00:04:12 2016 +0200 @@ -126,6 +126,13 @@ is not automatically retried and the response is returned */ unsigned int max_auto_retry_delay; + /* the kernel send/receive buffer sizes used for the connection sockets. + Configuring this is mainly useful for the test suite. The kernel + defaults are used when these settings are 0. */ + size_t socket_send_buffer_size; + size_t socket_recv_buffer_size; + + /* enable logging debug messages */ bool debug; };