1 | From ec22ed6c9797dbdcd820e352167bef8500ca00c6 Mon Sep 17 00:00:00 2001
|
---|
2 | From: Andrew Tridgell <tridge@samba.org>
|
---|
3 | Date: Wed, 17 Feb 2010 12:20:35 +1100
|
---|
4 | Subject: [PATCH 3/5] don't compress TSIG names
|
---|
5 |
|
---|
6 | windows DNS servers will refuse TSIG-GSS requests with compressed
|
---|
7 | names
|
---|
8 | ---
|
---|
9 | bin/nsupdate/nsupdate.c | 4 ++++
|
---|
10 | lib/dns/message.c | 2 ++
|
---|
11 | lib/dns/tsig.c | 3 +++
|
---|
12 | 3 files changed, 9 insertions(+), 0 deletions(-)
|
---|
13 |
|
---|
14 | diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c
|
---|
15 | index 6cf4cf4..f7ce6db 100644
|
---|
16 | --- a/bin/nsupdate/nsupdate.c
|
---|
17 | +++ b/bin/nsupdate/nsupdate.c
|
---|
18 | @@ -1985,6 +1985,10 @@ send_update(dns_name_t *zonename, isc_sockaddr_t *master,
|
---|
19 | fprintf(stderr, "Sending update to %s\n", addrbuf);
|
---|
20 | }
|
---|
21 |
|
---|
22 | + /* windows doesn't like the tsig name to be compressed */
|
---|
23 | + if (updatemsg->tsigname)
|
---|
24 | + updatemsg->tsigname->attributes |= DNS_NAMEATTR_NOCOMPRESS;
|
---|
25 | +
|
---|
26 | result = dns_request_createvia3(requestmgr, updatemsg, srcaddr,
|
---|
27 | master, options, tsigkey, timeout,
|
---|
28 | udp_timeout, udp_retries, global_task,
|
---|
29 | diff --git a/lib/dns/message.c b/lib/dns/message.c
|
---|
30 | index ae4965f..cb4528f 100644
|
---|
31 | --- a/lib/dns/message.c
|
---|
32 | +++ b/lib/dns/message.c
|
---|
33 | @@ -1531,6 +1531,8 @@ getsection(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx,
|
---|
34 | } else if (rdtype == dns_rdatatype_tsig && msg->tsig == NULL) {
|
---|
35 | msg->tsig = rdataset;
|
---|
36 | msg->tsigname = name;
|
---|
37 | + /* TSIG names should not be compressed */
|
---|
38 | + msg->tsigname->attributes |= DNS_NAMEATTR_NOCOMPRESS;
|
---|
39 | rdataset = NULL;
|
---|
40 | free_rdataset = ISC_FALSE;
|
---|
41 | free_name = ISC_FALSE;
|
---|
42 | diff --git a/lib/dns/tsig.c b/lib/dns/tsig.c
|
---|
43 | index 74a7af3..3223942 100644
|
---|
44 | --- a/lib/dns/tsig.c
|
---|
45 | +++ b/lib/dns/tsig.c
|
---|
46 | @@ -889,6 +889,9 @@ dns_tsig_sign(dns_message_t *msg) {
|
---|
47 | msg->tsig = dataset;
|
---|
48 | msg->tsigname = owner;
|
---|
49 |
|
---|
50 | + /* windows does not like the tsig name being compressed */
|
---|
51 | + msg->tsigname->attributes |= DNS_NAMEATTR_NOCOMPRESS;
|
---|
52 | +
|
---|
53 | return (ISC_R_SUCCESS);
|
---|
54 |
|
---|
55 | cleanup_rdatalist:
|
---|
56 | --
|
---|
57 | 1.6.3.3
|
---|
58 |
|
---|