From: Kai Blin Date: Wed, 28 Mar 2012 10:19:51 +0000 (+0200) Subject: s4 dns: unify error handling when bailing out X-Git-Tag: samba-4.0.0alpha21~276 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f01c6cf707087141fe244a1d90c5cdcb69322820;p=thirdparty%2Fsamba.git s4 dns: unify error handling when bailing out Autobuild-User: Kai Blin Autobuild-Date: Tue May 8 15:48:25 CEST 2012 on sn-devel-104 --- diff --git a/source4/dns_server/dns_server.c b/source4/dns_server/dns_server.c index eed20d57072..f9db095e744 100644 --- a/source4/dns_server/dns_server.c +++ b/source4/dns_server/dns_server.c @@ -100,6 +100,7 @@ static NTSTATUS dns_process(struct dns_server *dns, { enum ndr_err_code ndr_err; WERROR ret; + uint16_t dns_err = DNS_RCODE_OK; struct dns_request_state *state; struct dns_name_packet *in_packet; struct dns_name_packet *out_packet; @@ -126,12 +127,8 @@ static NTSTATUS dns_process(struct dns_server *dns, if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { TALLOC_FREE(in_packet); DEBUG(0, ("Failed to parse packet %d!\n", ndr_err)); - *out = *in; - - out->data[2] |= 0x80; /* Toggle DNS_FLAG_REPLY */ - out->data[3] |= DNS_RCODE_FORMERR; - - return NT_STATUS_OK; + dns_err = DNS_RCODE_FORMERR; + goto drop; } if (DEBUGLVL(8)) { NDR_PRINT_DEBUG(dns_name_packet, in_packet); @@ -189,16 +186,18 @@ static NTSTATUS dns_process(struct dns_server *dns, TALLOC_FREE(in_packet); TALLOC_FREE(out_packet); DEBUG(0, ("Failed to push packet %d!\n", ndr_err)); - *out = *in; - - out->data[2] |= 0x80; /* Toggle DNS_FLAG_REPLY */ - out->data[3] |= DNS_RCODE_SERVFAIL; - - return NT_STATUS_OK; + dns_err = DNS_RCODE_SERVFAIL; + goto drop; } dump_data(8, out->data, out->length); return NT_STATUS_OK; + +drop: + *out = *in; + out->data[2] |= 0x80; /* Toggle DNS_FLAG_REPLY */ + out->data[3] |= dns_err; + return NT_STATUS_OK; } struct dns_tcp_call {