diff options
Diffstat (limited to 'source3/nmbd')
-rw-r--r-- | source3/nmbd/nmbd_packets.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c index 8a111eb957..70ea087426 100644 --- a/source3/nmbd/nmbd_packets.c +++ b/source3/nmbd/nmbd_packets.c @@ -864,6 +864,7 @@ void reply_netbios_packet(struct packet_struct *orig_packet, struct res_rec answers; struct nmb_packet *orig_nmb = &orig_packet->packet.nmb; BOOL loopback_this_packet = False; + BOOL use_null_rr_type = False; const char *packet_type = "unknown"; /* Check if we are sending to or from ourselves. */ @@ -906,6 +907,7 @@ void reply_netbios_packet(struct packet_struct *orig_packet, packet_type = "nmb_wack"; nmb->header.nm_flags.recursion_desired = False; nmb->header.nm_flags.recursion_available = False; + use_null_rr_type = True; break; case WINS_REG: packet_type = "wins_reg"; @@ -916,6 +918,9 @@ void reply_netbios_packet(struct packet_struct *orig_packet, packet_type = "wins_query"; nmb->header.nm_flags.recursion_desired = True; nmb->header.nm_flags.recursion_available = True; + if (rcode) { + use_null_rr_type = True; + } break; default: DEBUG(0,("reply_netbios_packet: Unknown packet type: %s %s to ip %s\n", @@ -947,7 +952,11 @@ for id %hu\n", packet_type, nmb_namestr(&orig_nmb->question.question_name), memset((char*)nmb->answers,'\0',sizeof(*nmb->answers)); nmb->answers->rr_name = orig_nmb->question.question_name; - nmb->answers->rr_type = orig_nmb->question.question_type; + if (use_null_rr_type) { + nmb->answers->rr_type = RR_TYPE_NULL; + } else { + nmb->answers->rr_type = orig_nmb->question.question_type; + } nmb->answers->rr_class = orig_nmb->question.question_class; nmb->answers->ttl = ttl; |