avahi-daemon卡住了注册我正在使用avahi-publish-service发布的服务

时间:2014-08-22 03:36:55

标签: ubuntu networking bonjour avahi

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

以下是“unstuck”主机上此命令的输出结果:

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似乎暂时解决了这个问题。此外,一次尝试重新启动卡住的机器工作。但是,我想了解为什么会发生这种情况以及如何以最可靠的方式处理问题。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我注意到,在Avahi网站上,201票已经存在了一段时间。虽然我甚至无法在那里注册......看起来这个项目的开发已经下降了。我们遇到了类似的问题。以下内容(对我们而言):


    diff --git a/avahi-core/server.c b/avahi-core/server.c
    index 69a1d02..03d4fc1 100644
    --- a/avahi-core/server.c
    +++ b/avahi-core/server.c
    @@ -1216,8 +1216,8 @@ static void register_browse_domain(AvahiServer *s) {
     static void register_stuff(AvahiServer *s) {
         assert(s);

    -    server_set_state(s, AVAHI_SERVER_REGISTERING);
         s->n_host_rr_pending ++; /** Make sure that the state isn't changed tp AVAHI_SERVER_RUNNING too early */
    +    server_set_state(s, AVAHI_SERVER_REGISTERING);

         register_hinfo(s);
         register_browse_domain(s);