4

有时,我注意到我无法检测到我在 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

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

4

2 回答 2

1

我有一个类似的问题并写了一个补丁来解决我的问题。

后续跟进中,我将补丁与错误 201 相关联。

更新:

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

于 2015-09-10T09:00:20.723 回答
0

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

    差异 --git a/avahi-core/server.cb/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) {
     静态无效 register_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);
         注册浏览域;

于 2015-06-10T13:31:52.710 回答