'Read the next I{count} records from the wire data and add them to
the specified section.
@param section: the section of the message to which to add records
@type section: list of dns.rrset.RRset objects
@param count: the number of records to read
@type count: int'

def _get_section(self, section, count):

    if (self.updating or self.one_rr_per_rrset):
        force_unique = True
    else:
        force_unique = False
    seen_opt = False
    for i in xrange(0, count):
        rr_start = self.current
        (name, used) = dns.name.from_wire(self.wire, self.current)
        absolute_name = name
        if (self.message.origin is not None):
            name = name.relativize(self.message.origin)
        self.current = (self.current + used)
        (rdtype, rdclass, ttl, rdlen) = struct.unpack('!HHIH', self.wire[self.current:(self.current + 10)])
        self.current = (self.current + 10)
        if (rdtype == dns.rdatatype.OPT):
            if ((section is not self.message.additional) or seen_opt):
                raise BadEDNS
            self.message.payload = rdclass
            self.message.ednsflags = ttl
            self.message.edns = ((ttl & 16711680) >> 16)
            self.message.options = []
            current = self.current
            optslen = rdlen
            while (optslen > 0):
                (otype, olen) = struct.unpack('!HH', self.wire[current:(current + 4)])
                current = (current + 4)
                opt = dns.edns.option_from_wire(otype, self.wire, current, olen)
                self.message.options.append(opt)
                current = (current + olen)
                optslen = ((optslen - 4) - olen)
            seen_opt = True
        elif (rdtype == dns.rdatatype.TSIG):
            if (not ((section is self.message.additional) and (i == (count - 1)))):
                raise BadTSIG
            if (self.message.keyring is None):
                raise UnknownTSIGKey('got    signed    message    without    keyring')
            secret = self.message.keyring.get(absolute_name)
            if (secret is None):
                raise UnknownTSIGKey(("key    '%s'    unknown" % name))
            self.message.keyname = absolute_name
            (self.message.keyalgorithm, self.message.mac) = dns.tsig.get_algorithm_and_mac(self.wire, self.current, rdlen)
            self.message.tsig_ctx = dns.tsig.validate(self.wire, absolute_name, secret, int(time.time()), self.message.request_mac, rr_start, self.current, rdlen, self.message.tsig_ctx, self.message.multi, self.message.first)
            self.message.had_tsig = True
        else:
            if (ttl < 0):
                ttl = 0
            if (self.updating and ((rdclass == dns.rdataclass.ANY) or (rdclass == dns.rdataclass.NONE))):
                deleting = rdclass
                rdclass = self.zone_rdclass
            else:
                deleting = None
            if ((deleting == dns.rdataclass.ANY) or ((deleting == dns.rdataclass.NONE) and (section is self.message.answer))):
                covers = dns.rdatatype.NONE
                rd = None
            else:
                rd = dns.rdata.from_wire(rdclass, rdtype, self.wire, self.current, rdlen, self.message.origin)
                covers = rd.covers()
            if (self.message.xfr and (rdtype == dns.rdatatype.SOA)):
                force_unique = True
            rrset = self.message.find_rrset(section, name, rdclass, rdtype, covers, deleting, True, force_unique)
            if (rd is not None):
                rrset.add(rd, ttl)
        self.current = (self.current + rdlen)
