Skip to content

Commit

Permalink
Use bonjour advertiser as default again, warn when avahi is used on a…
Browse files Browse the repository at this point in the history
…n unsupported platform. (homebridge#927)
  • Loading branch information
Supereg authored and Koushik Dutta committed Jun 28, 2022
1 parent 4d427ad commit a7579ad
Showing 1 changed file with 28 additions and 24 deletions.
52 changes: 28 additions & 24 deletions src/lib/Accessory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1208,30 +1208,34 @@ export class Accessory extends EventEmitter {
// create our Advertiser which broadcasts our presence over mdns
const parsed = Accessory.parseBindOption(info);

const defaultAdvertiser = info.advertiser
?? (await AvahiAdvertiser.isAvailable() ? MDNSAdvertiser.AVAHI : MDNSAdvertiser.BONJOUR);

switch (defaultAdvertiser) {
case MDNSAdvertiser.CIAO:
this._advertiser = new CiaoAdvertiser(this._accessoryInfo, {
interface: parsed.advertiserAddress
}, {
restrictedAddresses: parsed.serviceRestrictedAddress,
disabledIpv6: parsed.serviceDisableIpv6,
});
break;
case MDNSAdvertiser.BONJOUR:
// noinspection JSDeprecatedSymbols
this._advertiser = new BonjourHAPAdvertiser(this._accessoryInfo, info.mdns, {
restrictedAddresses: parsed.serviceRestrictedAddress,
disabledIpv6: parsed.serviceDisableIpv6,
});
break;
case MDNSAdvertiser.AVAHI:
this._advertiser = new AvahiAdvertiser(this._accessoryInfo);
break;
default:
throw new Error("Unsupported advertiser setting: '" + info.advertiser + "'");
let selectedAdvertiser = info.advertiser ?? MDNSAdvertiser.BONJOUR;
if (info.advertiser === MDNSAdvertiser.AVAHI && !await AvahiAdvertiser.isAvailable()) {
console.error("[${this.displayName}] Selected \"" + MDNSAdvertiser.AVAHI + "\" advertiser though it isn't available on the platform. " +
"Reverting to \"" + MDNSAdvertiser.BONJOUR + "\"");
selectedAdvertiser = MDNSAdvertiser.BONJOUR;
}

switch (selectedAdvertiser) {
case MDNSAdvertiser.CIAO:
this._advertiser = new CiaoAdvertiser(this._accessoryInfo, {
interface: parsed.advertiserAddress,
}, {
restrictedAddresses: parsed.serviceRestrictedAddress,
disabledIpv6: parsed.serviceDisableIpv6,
});
break;
case MDNSAdvertiser.BONJOUR:
// noinspection JSDeprecatedSymbols
this._advertiser = new BonjourHAPAdvertiser(this._accessoryInfo, info.mdns, {
restrictedAddresses: parsed.serviceRestrictedAddress,
disabledIpv6: parsed.serviceDisableIpv6,
});
break;
case MDNSAdvertiser.AVAHI:
this._advertiser = new AvahiAdvertiser(this._accessoryInfo);
break;
default:
throw new Error("Unsupported advertiser setting: '" + info.advertiser + "'");
}
this._advertiser.on(AdvertiserEvent.UPDATED_NAME, name => {
this.displayName = name;
Expand Down

0 comments on commit a7579ad

Please sign in to comment.