diff --git a/lib/browser.js b/lib/browser.js index edcb47b..6dd3cb1 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -4,7 +4,7 @@ var util = require('util') var EventEmitter = require('events').EventEmitter var serviceName = require('multicast-dns-service-types') var dnsEqual = require('dns-equal') -var txt = require('dns-txt')() +var dnsTxt = require('dns-txt') var TLD = '.local' var WILDCARD = '_services._dns-sd._udp' + TLD @@ -35,6 +35,7 @@ function Browser (mdns, opts, onup) { this._mdns = mdns this._onresponse = null this._serviceMap = {} + this._txt = null if (!opts || !opts.type) { this._name = WILDCARD @@ -45,6 +46,8 @@ function Browser (mdns, opts, onup) { this._wildcard = false } + this._txt = dnsTxt(opts.txt) + this.services = [] if (onup) this.on('up', onup) @@ -75,7 +78,7 @@ Browser.prototype.start = function () { Object.keys(nameMap).forEach(function (name) { goodbyes(name, packet).forEach(self._removeService.bind(self)) - var matches = buildServicesFor(name, packet) + var matches = buildServicesFor(name, packet, self._txt) if (matches.length === 0) return matches.forEach(function (service) { @@ -127,7 +130,7 @@ function goodbyes (name, packet) { }) } -function buildServicesFor (name, packet) { +function buildServicesFor (name, packet, txt) { var records = packet.answers.concat(packet.additionals).filter(function (rr) { return rr.ttl > 0 // ignore goodbye messages }) diff --git a/test/bonjour.js b/test/bonjour.js index 82d28f2..85d5f9b 100644 --- a/test/bonjour.js +++ b/test/bonjour.js @@ -98,6 +98,22 @@ test('bonjour.find', function (bonjour, t) { bonjour.publish({ name: 'Baz', type: 'test', port: 3000, txt: { foo: 'bar' } }).on('up', next()) }) +test('bonjour.find - binary txt', function (bonjour, t) { + var next = afterAll(function () { + var browser = bonjour.find({ type: 'test', txt: { binary: true } }) + + browser.on('up', function (s) { + t.equal(s.name, 'Foo') + t.deepEqual(s.txt, { bar: new Buffer('buz') }) + t.deepEqual(s.rawTxt, new Buffer('076261723d62757a', 'hex')) + bonjour.destroy() + t.end() + }) + }) + + bonjour.publish({ name: 'Foo', type: 'test', port: 3000, txt: { bar: new Buffer('buz') } }).on('up', next()) +}) + test('bonjour.find - down event', function (bonjour, t) { var service = bonjour.publish({ name: 'Foo Bar', type: 'test', port: 3000 })