avahi-daemon 无法注册我正在使用 avahi-publish-service 发布的服务

Posted

技术标签:

【中文标题】avahi-daemon 无法注册我正在使用 avahi-publish-service 发布的服务【英文标题】:avahi-daemon gets stuck registering a service I'm publishing with avahi-publish-service 【发布时间】:2014-10-15 20:15:14 【问题描述】:

有时,我注意到我无法检测到我在 Ubuntu 上通过 avahi (bonjour) 发布的服务。例如,avahi-browse -a 不显示已发布的服务,浏览器也不解析已发布的 .local 主机名。在服务器端,我注意到ps 的输出表明avahi-daemon 在注册服务时遇到问题:

ubuntu@node3:~$ ps aux | grep [a]vahi
root     26584  0.0  0.0   4204   356 ?        S    19:21   0:00 supervise avahi
ubuntu   26598  0.0  0.0   4216   352 ?        S    19:21   0:00 multilog s8388608 n10 /var/log/avahi
avahi    28332  0.0  0.0  32352  1636 ?        S    20:19   0:00 avahi-daemon: registering [node3-44.local]
avahi    28333  0.0  0.0  32224   468 ?        S    20:19   0:00 avahi-daemon: chroot helper
root     28338  0.0  0.0  17192  1028 ?        S    20:19   0:00 avahi-publish-service -as node3 _foobar._tcp 8080

这是该命令在“未卡住”主机上的输出:

ubuntu@node2:~$ ps aux | grep [a]vahi
root     26501  0.0  0.0   4204   356 ?        S    19:21   0:00 supervise avahi
ubuntu   26527  0.0  0.0   4216   352 ?        S    19:21   0:00 multilog s8388608 n10 /var/log/avahi
avahi    29418  0.0  0.0  32484  1632 ?        S    20:12   0:00 avahi-daemon: running [node2.local]
avahi    29419  0.0  0.0  32224   464 ?        S    20:12   0:00 avahi-daemon: chroot helper
root     29425  0.0  0.0  17192  1032 ?        S    20:12   0:00 avahi-publish-service -as node2 _foobar._tcp 8080

我确实看到了这个旧的bug report,这可能是相关的。有时杀死avahi-daemon 似乎可以暂时解决问题。此外,重新启动卡住的机器的一次尝试也奏效了。但是,我想了解为什么会发生这种情况以及如何以最可靠的方式处理该问题。有什么想法吗?

【问题讨论】:

我之前也遇到过同样的问题,直到在 avahi-daemon.conf 中添加了allow-interfaces= 【参考方案1】:

我遇到了类似的问题并写了一封patch 为我解决了这个问题。

在follow up 中,我将补丁与错误 201 相关联。

更新:

一年多以来,我一直在多台设备上运行 avahi 守护程序的补丁版本。设备通常会重新启动、断开/重新连接到网络。这些设备在应用补丁后从未卡住注册,我们也没有遇到任何奇怪的副作用。

【讨论】:

【参考方案2】:

我注意到 201 票在 Avahi 网站上已经存在了一段时间。虽然我什至不能在那里注册......看起来这个项目的发展已经下降。我们遇到了类似的问题。下面解决了它(对我们来说):

差异 --git a/avahi-core/server.c b/avahi-core/server.c 索引 69a1d02..03d4fc1 100644 --- a/avahi-core/server.c +++ b/avahi-core/server.c @@ -1216,8 +1216,8 @@ static void register_browse_domain(AvahiServer *s) 静态无效寄存器_stuff(AvahiServer *s) 断言; - server_set_state(s, AVAHI_SERVER_REGISTERING); s->n_host_rr_pending ++; /** 确保状态没有过早改变 tp AVAHI_SERVER_RUNNING */ + server_set_state(s, AVAHI_SERVER_REGISTERING); register_hinfo(s); 注册浏览域;

【讨论】:

你能告诉我你测试的范围有多广吗?将有助于集成补丁。 github.com/lathiat/avahi/issues/7

以上是关于avahi-daemon 无法注册我正在使用 avahi-publish-service 发布的服务的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 expo-av 在本机反应中播放背景音频?

sh avahi-daemon.sh

禁用和卸载树莓派 4B 上 avahi-daemon

禁用和卸载树莓派 4B 上 avahi-daemon

禁用和卸载树莓派 4B 上 avahi-daemon

[转帖]centos 7 avahi-daemon服务的作用及如何关闭