summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2017-12-13 13:55:57 -0500
committerThomas Markwalder <tmark@isc.org>2017-12-13 13:55:57 -0500
commit4406f9b05dfc3aa5f232e01be94fb38950e3661f (patch)
treeb0e00ede437b8b2036c1f23c4b1f799604a41659 /server
parent2f3eca17e2f55801bbec144698c24693e81c8cba (diff)
downloadisc-dhcp-4406f9b05dfc3aa5f232e01be94fb38950e3661f.tar.gz
[master] delayed-ack is now compiled in by default
Merges in rt42444.
Diffstat (limited to 'server')
-rw-r--r--server/dhcp.c2
-rw-r--r--server/dhcpd.conf.530
2 files changed, 17 insertions, 15 deletions
diff --git a/server/dhcp.c b/server/dhcp.c
index bbe97b31..3396ebad 100644
--- a/server/dhcp.c
+++ b/server/dhcp.c
@@ -3574,7 +3574,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
} else {
lease->cltt = cur_time;
#if defined(DELAYED_ACK) && !defined(DHCP4o6)
- if (enqueue)
+ if (enqueue && max_outstanding_acks != 0)
delayed_ack_enqueue(lease);
else
#endif
diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5
index 1ea87396..f2b6fa49 100644
--- a/server/dhcpd.conf.5
+++ b/server/dhcpd.conf.5
@@ -2267,26 +2267,28 @@ statements
.B max-ack-delay \fImicroseconds\fR\fB;\fR
.PP
.I Count
-should be an integer value from zero to 2^16-1, and defaults to 28. The
-count represents how many DHCPv4 replies maximum will be queued pending
-transmission until after a database commit event. If this number is
-reached, a database commit event (commonly resulting in fsync() and
-representing a performance penalty) will be made, and the reply packets
-will be transmitted in a batch afterwards. This preserves the RFC2131
-direction that "stable storage" be updated prior to replying to clients.
-Should the DHCPv4 sockets "go dry" (select() returns immediately with no
-read sockets), the commit is made and any queued packets are transmitted.
+should be an integer value from zero to 2^16-1 and defaults to 0, which means
+that the feature is disabled. Otherwise, 28 may be a sensible starting point
+for many configurations (SO_SNDBUF size / 576 bytes.) The count represents how
+many DHCPv4 replies maximum will be queued pending transmission until after a
+database commit event. If this number is reached, a database commit event
+(commonly resulting in fsync() and representing a performance penalty) will be
+made, and the reply packets will be transmitted in a batch afterwards. This
+preserves the RFC2131 direction that "stable storage" be updated prior to
+replying to clients. Should the DHCPv4 sockets "go dry" (select() returns
+immediately with no read sockets), the commit is made and any queued packets
+are transmitted.
.PP
Similarly, \fImicroseconds\fR indicates how many microseconds are permitted
to pass inbetween queuing a packet pending an fsync, and performing the
fsync. Valid values range from 0 to 2^32-1, and defaults to 250,000 (1/4 of
a second).
.PP
-The delayed-ack feature is not compiled in by default, but must be enabled
-at compile time with \'./configure --enable-delayed-ack\'. While we no
-longer consider it experimental and we don't know of any issues with it,
-in order to minimize problems with existing configuration files we have
-left it disabled by default.
+The delayed-ack feature is compiled in by default, but can be disabled
+at compile time with \'./configure --disable-delayed-ack\'. Please note
+that the delayed-ack feature is not currently compatible with support for
+DHPCv4o6 (compiled out by default). You must compile with one or the
+other but not both.
.RE
.PP
The