def _do_query(cls, buf, offset, error):
qry = {}
res = cls._do_name(buf, offset, 0, error)
if res is None:
e = ("_do_query", offset, "_do_name failed")
error.append(e)
return None
offset, name = res
qry['Qname'] = name
fmt = "!HH"
reqlen = struct.calcsize(fmt)
strng = buf[offset:offset + reqlen]
if len(strng) != reqlen:
e = ("_do_query", offset, 'offset out of range: buf size = %d' % len(buf))
error.append(e)
return None
res = struct.unpack(fmt, strng)
qry['Qtype'] = cls._type_to_text(res[0])
qry['Qclass'] = cls._class_to_text(res[1])
return offset + reqlen, qry
评论列表
文章目录