Enable TCP_NODELAY
This commit is contained in:
parent
71f3532e04
commit
36c59ff375
1
common.c
1
common.c
|
@ -33,6 +33,7 @@
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
|
||||||
/// Shorthand to set an error and return failure from the function
|
/// Shorthand to set an error and return failure from the function
|
||||||
#define FAIL(...) \
|
#define FAIL(...) \
|
||||||
|
|
|
@ -4732,6 +4732,12 @@ irc_finish_connection (struct server *s, int socket)
|
||||||
{
|
{
|
||||||
struct app_context *ctx = s->ctx;
|
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);
|
set_blocking (socket, false);
|
||||||
s->socket = socket;
|
s->socket = socket;
|
||||||
s->transport = get_config_boolean (s->config, "tls")
|
s->transport = get_config_boolean (s->config, "tls")
|
||||||
|
|
7
kike.c
7
kike.c
|
@ -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.dispatcher = on_client_ping_timer;
|
||||||
c->ping_timer.user_data = c;
|
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);
|
set_blocking (fd, false);
|
||||||
client_update_poller (c, NULL);
|
client_update_poller (c, NULL);
|
||||||
client_set_kill_timer (c);
|
client_set_kill_timer (c);
|
||||||
|
|
Loading…
Reference in New Issue