Enable TCP_NODELAY

This commit is contained in:
Přemysl Eric Janouch 2015-11-22 02:12:52 +01:00
parent 71f3532e04
commit 36c59ff375
3 changed files with 14 additions and 0 deletions

View File

@ -33,6 +33,7 @@
#include <setjmp.h>
#include <inttypes.h>
#include <arpa/inet.h>
#include <netinet/tcp.h>
/// Shorthand to set an error and return failure from the function
#define FAIL(...) \

View File

@ -4732,6 +4732,12 @@ irc_finish_connection (struct server *s, int socket)
{
struct app_context *ctx = s->ctx;
// Most of our output comes from the user one full command at a time and we
// use output buffering, so it makes a lot of sense to avoid these delays
int yes = 1;
soft_assert (setsockopt (socket, IPPROTO_TCP, TCP_NODELAY,
&yes, sizeof yes) != -1);
set_blocking (socket, false);
s->socket = socket;
s->transport = get_config_boolean (s->config, "tls")

7
kike.c
View File

@ -3421,6 +3421,13 @@ irc_try_fetch_client (struct server_context *ctx, int listen_fd)
c->ping_timer.dispatcher = on_client_ping_timer;
c->ping_timer.user_data = c;
// A little bit questionable once the traffic gets high enough (IMO),
// but it reduces silly latencies that we don't need because we already
// do buffer our output
int yes = 1;
soft_assert (setsockopt (fd, IPPROTO_TCP, TCP_NODELAY,
&yes, sizeof yes) != -1);
set_blocking (fd, false);
client_update_poller (c, NULL);
client_set_kill_timer (c);