summaryrefslogtreecommitdiff
path: root/contrib/bind9/bin/named/xfrout.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bind9/bin/named/xfrout.c')
-rw-r--r--contrib/bind9/bin/named/xfrout.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/contrib/bind9/bin/named/xfrout.c b/contrib/bind9/bin/named/xfrout.c
index 83c64f27954e7..6cda6589e1c92 100644
--- a/contrib/bind9/bin/named/xfrout.c
+++ b/contrib/bind9/bin/named/xfrout.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: xfrout.c,v 1.139.16.3 2011-07-28 04:30:54 marka Exp $ */
+/* $Id: xfrout.c,v 1.139.16.4 2011/12/01 01:00:50 marka Exp $ */
#include <config.h>
@@ -1287,6 +1287,13 @@ sendstream(xfrout_ctx_t *xfr) {
isc_buffer_free(&xfr->lasttsig);
/*
+ * Account for reserved space.
+ */
+ if (xfr->tsigkey != NULL)
+ INSIST(msg->reserved != 0U);
+ isc_buffer_add(&xfr->buf, msg->reserved);
+
+ /*
* Include a question section in the first message only.
* BIND 8.2.1 will not recognize an IXFR if it does not
* have a question section.
@@ -1324,9 +1331,13 @@ sendstream(xfrout_ctx_t *xfr) {
ISC_LIST_APPEND(qname->list, qrdataset, link);
dns_message_addname(msg, qname, DNS_SECTION_QUESTION);
- }
- else
+ } else {
+ /*
+ * Reserve space for the 12-byte message header
+ */
+ isc_buffer_add(&xfr->buf, 12);
msg->tcp_continuation = 1;
+ }
}
/*