429 {
430 const auto size = buffer.size();
431 if (size < DnsHeader::SIZE + DnsQuestion::MIN_SIZE || size >
MAX_SIZE) {
432 return boost::none;
433 }
434
435 DnsMessage res;
437
438 if (res.header.qdcount > 1 || res.header.ancount >
MAX_ANS) {
439 return boost::none;
440 }
441
443 if (res.header.qdcount == 1) {
445 }
446
447 for (unsigned i = 0; i < res.header.rrcount(); i++) {
448 size_t dataoffset = 0;
450 if (!rr) {
451 return boost::none;
452 }
453 else {
454 res.parse_rr(buffer, std::move(*rr), dataoffset, txt_keys);
455 }
456 }
457
458 return std::move(res);
459 }
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:582
static optional< DnsQuestion > decode(const std::vector< char > &buffer, size_t &offset)
Definition Bonjour.cpp:188
static optional< DnsResource > decode(const std::vector< char > &buffer, size_t &offset, size_t &dataoffset)
Definition Bonjour.cpp:220