{
struct http_client_connection *conn =
(struct http_client_connection *)_conn;
+ const struct http_client_settings *set = &conn->client->set;
const char *error;
if (!success) {
} 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);
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);
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;
};