MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / reply

Method reply

modules/io/dnssd/dnssd.js:509–539  ·  view source on GitHub ↗
(response, mask, service, bye = false, from, host = service.host)

Source from the content-addressed store, hash-verified

507 0x01 - A
508 */
509 reply(response, mask, service, bye = false, from, host = service.host) {
510 const build = response ? false : true;
511 if (build) response = new Serializer({query: false, opcode: DNS.OPCODE.QUERY, authoritative: true});
512 bye = bye ? 0 : 0xFFFFFFF;
513 const instanceName = service?.instanceName ?? host;
514
515 if (0x20 & mask) // NSEC indicating A only
516 response.add(DNS.SECTION.ANSWER, host + "." + LOCAL, DNS.RR.NSEC, DNS.CLASS.IN | DNSSD.FLUSH, TTL & bye,
517 {next: host + "." + LOCAL, bitmaps: Uint8Array.of(0, 4, 0x40, 0, 0, 0)});
518
519 if (0x10 & mask) // PTR for service discovery
520 response.add(DNS.SECTION.ANSWER, "_services._dns-sd._udp.local", DNS.RR.PTR, DNS.CLASS.IN, TTL & bye, "_" + service.name + "._" + service.protocol + "." + LOCAL);
521
522 if (0x08 & mask) // PTR
523 response.add(DNS.SECTION.ANSWER, "_" + service.name + "._" + service.protocol + "." + LOCAL, DNS.RR.PTR, DNS.CLASS.IN, TTL & bye, instanceName + "._" + service.name + "._" + service.protocol + "." + LOCAL);
524
525 if ((0x04 & mask) && service.txt) // TXT
526 response.add(DNS.SECTION.ANSWER, instanceName + "._" + service.name + "._" + service.protocol + "." + LOCAL, DNS.RR.TXT, DNS.CLASS.IN | ((0x8000 & mask) ? DNSSD.FLUSH : 0), TTL & bye, service.txt);
527
528 if (0x02 & mask) // SRV
529 response.add(DNS.SECTION.ANSWER, instanceName + "._" + service.name + "._" + service.protocol + "." + LOCAL, DNS.RR.SRV, DNS.CLASS.IN, 120 & bye,
530 {priority: 0, weight: 0, port: service.port, target: host + "." + LOCAL});
531
532 if (0x01 & mask) // A
533 response.add(DNS.SECTION.ANSWER, host + "." + LOCAL, DNS.RR.A, DNS.CLASS.IN | DNSSD.FLUSH, 120 & bye, Net.get("IP", from));
534
535 if (!build)
536 return;
537
538 return response.build();
539 }
540
541 /*
542 Probe

Callers 4

addMethod · 0.95
updateMethod · 0.95
removeMethod · 0.95
#onPacketMethod · 0.95

Calls 3

addMethod · 0.65
getMethod · 0.65
buildMethod · 0.45

Tested by

no test coverage detected