Mercurial > dovecot > core-2.2
changeset 20370:142b1aac8bea
lib-http: server: 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 | Mon, 20 Jun 2016 01:25:02 +0200 |
parents | 5b16f43fcb3b |
children | eae726541234 |
files | src/lib-http/http-server-connection.c src/lib-http/http-server.c src/lib-http/http-server.h |
diffstat | 3 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-http/http-server-connection.c Mon Jun 20 01:20:33 2016 +0200 +++ b/src/lib-http/http-server-connection.c Mon Jun 20 01:25:02 2016 +0200 @@ -1011,6 +1011,7 @@ int fd_in, int fd_out, bool ssl, const struct http_server_callbacks *callbacks, void *context) { + const struct http_server_settings *set = &server->set; struct http_server_connection *conn; static unsigned int id = 0; struct ip_addr addr; @@ -1029,6 +1030,19 @@ if (fd_in != fd_out) net_set_nonblock(fd_out, TRUE); + if (set->socket_send_buffer_size > 0) { + if (net_set_send_buffer_size(fd_out, + set->socket_send_buffer_size) < 0) + i_error("net_set_send_buffer_size(%"PRIuSIZE_T") failed: %m", + set->socket_send_buffer_size); + } + if (set->socket_recv_buffer_size > 0) { + if (net_set_recv_buffer_size(fd_in, + set->socket_recv_buffer_size) < 0) + i_error("net_set_recv_buffer_size(%"PRIuSIZE_T") failed: %m", + set->socket_recv_buffer_size); + } + /* get a name for this connection */ if (fd_in != fd_out || net_getpeername(fd_in, &addr, &port) < 0) { name = t_strdup_printf("[%u]", id);
--- a/src/lib-http/http-server.c Mon Jun 20 01:20:33 2016 +0200 +++ b/src/lib-http/http-server.c Mon Jun 20 01:25:02 2016 +0200 @@ -34,6 +34,8 @@ server->set.max_pipelined_requests = (set->max_pipelined_requests > 0 ? set->max_pipelined_requests : 1); server->set.request_limits = set->request_limits; + server->set.socket_send_buffer_size = set->socket_send_buffer_size; + server->set.socket_recv_buffer_size = set->socket_recv_buffer_size; server->set.debug = set->debug; server->conn_list = http_server_connection_list_init();
--- a/src/lib-http/http-server.h Mon Jun 20 01:20:33 2016 +0200 +++ b/src/lib-http/http-server.h Mon Jun 20 01:25:02 2016 +0200 @@ -24,6 +24,12 @@ /* request limits */ struct http_request_limits request_limits; + /* 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; + bool debug; };