diff options
Diffstat (limited to 'source/a/quota/quotad.fix.high.cpu.usage.diff')
-rw-r--r-- | source/a/quota/quotad.fix.high.cpu.usage.diff | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/source/a/quota/quotad.fix.high.cpu.usage.diff b/source/a/quota/quotad.fix.high.cpu.usage.diff new file mode 100644 index 000000000..5dfafc9fd --- /dev/null +++ b/source/a/quota/quotad.fix.high.cpu.usage.diff @@ -0,0 +1,35 @@ +diff -up quota-4.04/svc_socket.c.orig quota-4.04/svc_socket.c +--- quota-4.04/svc_socket.c.orig 2017-09-05 10:04:16.000000000 -0400 ++++ quota-4.04/svc_socket.c 2018-05-12 14:46:44.813388914 -0400 +@@ -118,6 +118,15 @@ static int svc_create_sock(struct addrin + return -1; + } + ++ if (ai->ai_family == AF_INET6) { ++ if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, ++ &optval, sizeof(optval)) < 0) { ++ errstr(_("Cannot set ipv6 socket options: %s\n"), strerror(errno)); ++ close(fd); ++ return -1; ++ } ++ } ++ + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0) { + errstr(_("Cannot set socket options: %s\n"), strerror(errno)); + close(fd); +@@ -129,6 +138,15 @@ static int svc_create_sock(struct addrin + close(fd); + return -1; + } ++ ++ if (ai->ai_protocol == IPPROTO_TCP) { ++ if (listen(fd, SOMAXCONN) < 0) { ++ errstr(_("Cannot listen to address: %s\n"), strerror(errno)); ++ close(fd); ++ return -1; ++ } ++ } ++ + return fd; + } + |