components/avahi/patches/03-entry.patch
author Stephen Gaul Jr <steve.gaul@oracle.com>
Fri, 24 Jun 2016 11:30:54 -0700
changeset 6279 b8986042dd84
parent 5257 0da26ce015ab
permissions -rw-r--r--
PSARC/2016/217 Smartcard Reintroduction PSARC/2016/232 CACkey Smartcard PKCS#11 provider 22822476 Add CACKey v0.7.4 to Userland consolidation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5257
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     1
Source: Desktop consolidation
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     2
Upstream promotion status: unknown
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     3
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     4
--- /usr/tmp/clean/avahi-0.6.28/avahi-core/entry.c	2010-08-26 01:51:38.985153000 +0100
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     5
+++ avahi-0.6.28/avahi-core/entry.c	2011-01-20 12:01:24.322248863 +0000
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     6
@@ -50,6 +50,33 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     7
 #include "rr-util.h"
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     8
 #include "domain-util.h"
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     9
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    10
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    11
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    12
+struct AvahiService {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    13
+    AvahiServer *server;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    14
+    AvahiSEntryGroup *group;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    15
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    16
+    int dead;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    17
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    18
+    AvahiPublishFlags flags;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    19
+    AvahiIfIndex interface;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    20
+    AvahiProtocol protocol;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    21
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    22
+    char *name;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    23
+    char *type;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    24
+    char *domain;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    25
+    char *host;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    26
+    uint16_t port;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    27
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    28
+    AvahiWatch *watch;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    29
+    DNSServiceRef client;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    30
+    size_t txtlen;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    31
+    uint8_t *txtrecord;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    32
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    33
+    AVAHI_LLIST_FIELDS(AvahiService, services);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    34
+};
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    35
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    36
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    37
 static void transport_flags_from_domain(AvahiServer *s, AvahiPublishFlags *flags, const char *domain) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    38
     assert(flags);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    39
     assert(domain);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    40
@@ -69,13 +96,146 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    41
         *flags |= AVAHI_PUBLISH_USE_WIDE_AREA;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    42
 }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    43
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    44
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    45
+static void register_service_reply(DNSServiceRef client, const DNSServiceFlags flags, DNSServiceErrorType errorCode,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    46
+        const char *name, const char *regtype, const char *domain, void *context) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    47
+    AvahiService *as = context;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    48
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    49
+    switch (errorCode) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    50
+        case kDNSServiceErr_NoError:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    51
+            as->group->n_probing--;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    52
+            if (as->group->n_probing == 0) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    53
+                avahi_s_entry_group_change_state(as->group, AVAHI_ENTRY_GROUP_ESTABLISHED);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    54
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    55
+            break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    56
+        case kDNSServiceErr_NameConflict:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    57
+            avahi_s_entry_group_change_state(as->group, AVAHI_ENTRY_GROUP_COLLISION);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    58
+            break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    59
+        default: 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    60
+            avahi_s_entry_group_change_state(as->group, AVAHI_ENTRY_GROUP_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    61
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    62
+}
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    63
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    64
+static void register_service_socket_event(AvahiWatch *w, int fd, AvahiWatchEvent events, void *userdata) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    65
+    AvahiService *as = userdata;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    66
+    DNSServiceErrorType ret;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    67
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    68
+    assert(w);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    69
+    assert(fd >= 0);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    70
+    assert(events & AVAHI_WATCH_IN);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    71
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    72
+    assert (fd == DNSServiceRefSockFD(as->client));
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    73
+    ret = DNSServiceProcessResult(as->client);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    74
+    if (ret != kDNSServiceErr_NoError) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    75
+        if (as->watch) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    76
+            as->server->poll_api->watch_free(as->watch);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    77
+            as->watch = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    78
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    79
+        DNSServiceRefDeallocate(as->client);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    80
+        as->client = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    81
+        avahi_s_entry_group_change_state(as->group, AVAHI_ENTRY_GROUP_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    82
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    83
+}
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    84
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    85
+static void avahi_service_free(AvahiServer*s, AvahiService *as) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    86
+    AvahiService *t;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    87
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    88
+    assert(s);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    89
+    assert(as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    90
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    91
+    /* Remove from linked list */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    92
+    AVAHI_LLIST_REMOVE(AvahiService, services, s->services, as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    93
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    94
+    /* Remove from associated group */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    95
+    if (as->group && (as->group->services != NULL))
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    96
+        AVAHI_LLIST_REMOVE(AvahiService, services, as->group->services, as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    97
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    98
+    if (as->name)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    99
+        avahi_free(as->name);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   100
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   101
+    if (as->type)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   102
+        avahi_free(as->type);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   103
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   104
+    if (as->domain)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   105
+        avahi_free(as->domain);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   106
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   107
+    if (as->host)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   108
+        avahi_free(as->host);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   109
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   110
+    if (as->watch)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   111
+        s->poll_api->watch_free(as->watch);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   112
+    
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   113
+    if (as->client)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   114
+        DNSServiceRefDeallocate (as->client);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   115
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   116
+    if (as->txtrecord)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   117
+        avahi_free(as->txtrecord);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   118
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   119
+    avahi_free(as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   120
+}
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   121
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   122
+static void avahi_register_service(AvahiServer *s, AvahiService *as) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   123
+    DNSServiceErrorType ret;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   124
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   125
+    ret = DNSServiceRegister(&as->client, 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   126
+              as->interface == AVAHI_IF_UNSPEC ? 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   127
+                  kDNSServiceInterfaceIndexAny :
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   128
+                  as->interface,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   129
+              0, 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   130
+              as->name,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   131
+              as->type,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   132
+              as->domain,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   133
+              as->host,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   134
+              htons(as->port),
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   135
+              as->txtlen,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   136
+              as->txtrecord,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   137
+              register_service_reply,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   138
+              as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   139
+    if (ret == kDNSServiceErr_NoError) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   140
+        if  (!as->client) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   141
+            avahi_s_entry_group_change_state(as->group, AVAHI_ENTRY_GROUP_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   142
+        } else {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   143
+            as->group->n_probing++;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   144
+            as->watch = s->poll_api->watch_new(s->poll_api, DNSServiceRefSockFD(as->client), AVAHI_WATCH_IN, register_service_socket_event, as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   145
+        } 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   146
+    } else {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   147
+        if (ret == kDNSServiceErr_NameConflict) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   148
+            avahi_s_entry_group_change_state(as->group, AVAHI_ENTRY_GROUP_COLLISION);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   149
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   150
+        else {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   151
+            avahi_s_entry_group_change_state(as->group, AVAHI_ENTRY_GROUP_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   152
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   153
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   154
+}
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   155
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   156
+static void register_record_reply(DNSServiceRef client, DNSRecordRef recordref, const DNSServiceFlags flags, DNSServiceErrorType errorCode, void *context) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   157
+    AvahiEntry *e = context;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   158
+    DNSServiceErrorType ret;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   159
+    
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   160
+    switch (errorCode) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   161
+        case kDNSServiceErr_NoError:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   162
+            break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   163
+        case kDNSServiceErr_NameConflict:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   164
+            e->recordref = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   165
+            avahi_server_set_errno(e->server, AVAHI_ERR_COLLISION);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   166
+            break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   167
+        default: 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   168
+            e->recordref = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   169
+            avahi_server_set_errno(e->server, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   170
+            break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   171
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   172
+}
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   173
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   174
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   175
 void avahi_entry_free(AvahiServer*s, AvahiEntry *e) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   176
     AvahiEntry *t;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   177
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   178
     assert(s);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   179
     assert(e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   180
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   181
+#ifndef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   182
     avahi_goodbye_entry(s, e, 1, 1);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   183
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   184
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   185
     /* Remove from linked list */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   186
     AVAHI_LLIST_REMOVE(AvahiEntry, entries, s->entries, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   187
@@ -102,6 +262,15 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   188
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   189
     while (g->entries)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   190
         avahi_entry_free(s, g->entries);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   191
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   192
+    while (g->services)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   193
+        avahi_service_free(s, g->services);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   194
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   195
+    if (g->record_connection) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   196
+        DNSServiceRefDeallocate(g->record_connection);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   197
+        g->record_connection = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   198
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   199
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   200
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   201
     if (g->register_time_event)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   202
         avahi_time_event_free(g->register_time_event);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   203
@@ -139,6 +308,21 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   204
         s->need_entry_cleanup = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   205
     }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   206
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   207
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   208
+    if (s->need_service_cleanup) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   209
+        AvahiService *as, *next;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   210
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   211
+        for (as = s->services; as; as = next) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   212
+            next = as->services_next;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   213
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   214
+            if (as->dead)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   215
+                avahi_service_free(s, as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   216
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   217
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   218
+        s->need_service_cleanup = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   219
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   220
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   221
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   222
     if (s->need_browser_cleanup)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   223
         avahi_browser_cleanup(s);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   224
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   225
@@ -245,8 +429,54 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   226
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   227
         /* Hmm, nothing found? */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   228
         if (!e) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   229
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   230
+            /*
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   231
+             * Assume that we are updating a service's primary TXT record
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   232
+             * so find the service
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   233
+             */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   234
+            DNSServiceErrorType ret;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   235
+            uint16_t rlen;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   236
+            uint8_t rdata[AVAHI_DNS_RDATA_MAX];
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   237
+            size_t l;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   238
+            AvahiService *as;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   239
+            int found_as = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   240
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   241
+            for (as = g->services; as; as = as->services_next) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   242
+                int a_ret = AVAHI_OK;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   243
+                char svc_name[AVAHI_DOMAIN_NAME_MAX];
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   244
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   245
+                if ((a_ret = avahi_service_name_join(svc_name, sizeof(svc_name), as->name, as->type, as->domain ? as->domain : s->domain_name)) < 0) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   246
+                      avahi_server_set_errno(s, a_ret);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   247
+                      return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   248
+                }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   249
+                if (!strcmp(svc_name, r->key->name)) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   250
+                    found_as = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   251
+                    break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   252
+                }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   253
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   254
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   255
+            if (!found_as) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   256
+                avahi_server_set_errno(s, AVAHI_ERR_NOT_FOUND);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   257
+                return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   258
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   259
+            if ((l = avahi_rdata_serialize(r, rdata, sizeof(rdata))) == (size_t) -1) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   260
+                avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   261
+                return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   262
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   263
+            ret = DNSServiceUpdateRecord(as->client,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   264
+                                         NULL,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   265
+                                         0,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   266
+                                         l,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   267
+                                         rdata,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   268
+                                         r->ttl);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   269
+            if (ret != kDNSServiceErr_NoError) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   270
+                avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   271
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   272
+            return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   273
+#else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   274
             avahi_server_set_errno(s, AVAHI_ERR_NOT_FOUND);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   275
             return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   276
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   277
         }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   278
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   279
         /* Update the entry */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   280
@@ -256,6 +486,36 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   281
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   282
         /* Announce our changes when needed */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   283
         if (!avahi_record_equal_no_ttl(old_record, r) && (!g || g->state != AVAHI_ENTRY_GROUP_UNCOMMITED)) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   284
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   285
+            DNSServiceErrorType ret;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   286
+            uint16_t rlen;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   287
+            uint8_t rdata[AVAHI_DNS_RDATA_MAX];
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   288
+            size_t l;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   289
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   290
+            if (!g->record_connection) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   291
+                if (DNSServiceCreateConnection(&g->record_connection) != kDNSServiceErr_NoError) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   292
+                    avahi_entry_free(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   293
+                    avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   294
+                    return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   295
+                }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   296
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   297
+            if ((l = avahi_rdata_serialize(r, rdata, sizeof(rdata))) == (size_t) -1) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   298
+                avahi_entry_free(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   299
+                avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   300
+                return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   301
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   302
+            ret = DNSServiceUpdateRecord(g->record_connection,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   303
+                                         e->recordref,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   304
+                                         0,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   305
+                                         l,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   306
+                                         rdata,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   307
+                                         r->ttl);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   308
+            if (ret != kDNSServiceErr_NoError) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   309
+                avahi_entry_free(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   310
+                avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   311
+                return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   312
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   313
+#else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   314
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   315
             /* Remove the old entry from all caches, if needed */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   316
             if (!(e->flags & AVAHI_PUBLISH_UNIQUE))
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   317
@@ -263,6 +523,7 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   318
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   319
             /* Reannounce our updated entry */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   320
             avahi_reannounce_entry(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   321
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   322
         }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   323
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   324
         /* If we were the first entry in the list, we need to update the key */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   325
@@ -273,6 +534,14 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   326
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   327
     } else {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   328
         AvahiEntry *t;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   329
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   330
+        DNSServiceErrorType ret;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   331
+        DNSServiceFlags bflags;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   332
+        uint16_t rlen;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   333
+        uint8_t rdata[AVAHI_DNS_RDATA_MAX];
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   334
+        size_t l;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   335
+        char *record_name;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   336
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   337
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   338
         /* Add a new record */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   339
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   340
@@ -307,7 +576,69 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   341
         if (g)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   342
             AVAHI_LLIST_PREPEND(AvahiEntry, by_group, g->entries, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   343
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   344
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   345
+        e->recordref = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   346
+        if (!g->record_connection) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   347
+            if (DNSServiceCreateConnection(&g->record_connection) != kDNSServiceErr_NoError) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   348
+                avahi_entry_free(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   349
+                avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   350
+                return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   351
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   352
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   353
+        bflags = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   354
+        if (flags & AVAHI_PUBLISH_ALLOW_MULTIPLE)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   355
+            bflags |= kDNSServiceFlagsShared;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   356
+        else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   357
+            bflags |= kDNSServiceFlagsUnique;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   358
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   359
+        switch (r->key->type) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   360
+            case AVAHI_DNS_TYPE_A:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   361
+            case AVAHI_DNS_TYPE_AAAA:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   362
+                record_name = avahi_strdup(r->key->name);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   363
+                break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   364
+            default:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   365
+                record_name = avahi_malloc(strlen(r->key->name) + strlen(s->host_name_fqdn) + 2);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   366
+                strcpy(record_name, r->key->name);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   367
+                strcat(record_name, ".");
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   368
+                strcat(record_name, s->host_name_fqdn);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   369
+                break;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   370
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   371
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   372
+        if ((l = avahi_rdata_serialize(r, rdata, sizeof(rdata))) == (size_t) -1) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   373
+            avahi_entry_free(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   374
+            avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   375
+            return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   376
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   377
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   378
+        ret = DNSServiceRegisterRecord(g->record_connection,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   379
+                  &e->recordref,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   380
+                  bflags,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   381
+                  interface == AVAHI_IF_UNSPEC ?
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   382
+                      kDNSServiceInterfaceIndexAny :
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   383
+                      interface,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   384
+                  record_name,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   385
+                  r->key->type,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   386
+                  r->key->clazz,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   387
+                  l,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   388
+                  rdata,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   389
+                  r->ttl,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   390
+                  register_record_reply,
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   391
+                  e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   392
+        if (ret == kDNSServiceErr_NoError) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   393
+            ret = DNSServiceProcessResult(g->record_connection);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   394
+            if (ret != kDNSServiceErr_NoError || e->recordref == NULL) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   395
+                avahi_entry_free(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   396
+                return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   397
+            }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   398
+        } else {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   399
+            avahi_entry_free(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   400
+            avahi_server_set_errno(s, AVAHI_ERR_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   401
+            return NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   402
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   403
+        avahi_free(record_name);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   404
+#else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   405
         avahi_announce_entry(s, e);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   406
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   407
     }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   408
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   409
     return e;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   410
@@ -583,6 +914,9 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   411
     AvahiRecord *r = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   412
     int ret = AVAHI_OK;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   413
     AvahiEntry *srv_entry = NULL, *txt_entry = NULL, *ptr_entry = NULL, *enum_entry = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   414
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   415
+    AvahiService *as;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   416
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   417
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   418
     assert(s);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   419
     assert(type);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   420
@@ -603,6 +937,36 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   421
     if (!domain)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   422
         domain = s->domain_name;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   423
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   424
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   425
+    as = avahi_new (AvahiService, 1);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   426
+    as->server = s;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   427
+    as->group = g;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   428
+    as->dead = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   429
+    as->flags = flags;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   430
+    as->interface = interface;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   431
+    as->protocol = protocol;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   432
+    as->name = avahi_strdup(name);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   433
+    as->type = avahi_strdup(type);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   434
+    as->domain = avahi_strdup(domain);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   435
+    as->host = avahi_strdup(host);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   436
+    as->port = port;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   437
+    as->watch = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   438
+    as->client = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   439
+    as->txtlen = avahi_string_list_serialize(strlst, NULL, 0);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   440
+    if (as->txtlen > 0) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   441
+        as->txtrecord = avahi_new(uint8_t, as->txtlen);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   442
+        if (as->txtrecord == NULL) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   443
+            as->txtlen = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   444
+            ret = avahi_server_set_errno(s, AVAHI_ERR_NO_MEMORY);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   445
+            goto fail;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   446
+        }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   447
+        avahi_string_list_serialize(strlst, as->txtrecord, as->txtlen);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   448
+    } else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   449
+        as->txtrecord = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   450
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   451
+    AVAHI_LLIST_PREPEND(AvahiService, services, s->services, as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   452
+    AVAHI_LLIST_PREPEND(AvahiService, services, g->services, as);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   453
+#else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   454
     if (!host)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   455
         host = s->host_name_fqdn;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   456
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   457
@@ -667,6 +1031,7 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   458
         ret = avahi_server_errno(s);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   459
         goto fail;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   460
     }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   461
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   462
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   463
 fail:
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   464
     if (ret != AVAHI_OK && !(flags & AVAHI_PUBLISH_UPDATE)) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   465
@@ -1013,7 +1378,11 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   466
     if (g->state == state)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   467
         return;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   468
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   469
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   470
+    assert(state <= AVAHI_ENTRY_GROUP_FAILURE);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   471
+#else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   472
     assert(state <= AVAHI_ENTRY_GROUP_COLLISION);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   473
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   474
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   475
     if (g->state == AVAHI_ENTRY_GROUP_ESTABLISHED) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   476
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   477
@@ -1063,6 +1432,10 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   478
     g->register_time.tv_sec = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   479
     g->register_time.tv_usec = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   480
     AVAHI_LLIST_HEAD_INIT(AvahiEntry, g->entries);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   481
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   482
+    AVAHI_LLIST_HEAD_INIT(AvahiService, g->services);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   483
+    g->record_connection = NULL;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   484
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   485
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   486
     AVAHI_LLIST_PREPEND(AvahiSEntryGroup, groups, s->groups, g);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   487
     return g;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   488
@@ -1087,16 +1460,26 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   489
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   490
 void avahi_s_entry_group_free(AvahiSEntryGroup *g) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   491
     AvahiEntry *e;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   492
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   493
+    AvahiService *s;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   494
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   495
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   496
     assert(g);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   497
     assert(g->server);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   498
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   499
     for (e = g->entries; e; e = e->by_group_next) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   500
         if (!e->dead) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   501
+#ifndef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   502
             avahi_goodbye_entry(g->server, e, 1, 1);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   503
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   504
             e->dead = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   505
         }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   506
     }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   507
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   508
+    for (s = g->services; s; s = s->services_next) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   509
+        s->dead = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   510
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   511
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   512
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   513
     if (g->register_time_event) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   514
         avahi_time_event_free(g->register_time_event);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   515
@@ -1107,11 +1490,17 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   516
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   517
     g->server->need_group_cleanup = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   518
     g->server->need_entry_cleanup = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   519
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   520
+    g->server->need_service_cleanup = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   521
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   522
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   523
     schedule_cleanup(g->server);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   524
 }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   525
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   526
 static void entry_group_commit_real(AvahiSEntryGroup *g) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   527
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   528
+    AvahiService *s;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   529
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   530
     assert(g);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   531
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   532
     gettimeofday(&g->register_time, NULL);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   533
@@ -1121,8 +1510,15 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   534
     if (g->dead)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   535
         return;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   536
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   537
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   538
+    assert(g->server);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   539
+    for (s = g->services; s; s = s->services_next)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   540
+        if (!s->dead)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   541
+            avahi_register_service(g->server, s);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   542
+#else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   543
     avahi_announce_group(g->server, g);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   544
     avahi_s_entry_group_check_probed(g, 0);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   545
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   546
 }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   547
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   548
 static void entry_group_register_time_event_callback(AVAHI_GCC_UNUSED AvahiTimeEvent *e, void* userdata) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   549
@@ -1175,16 +1571,28 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   550
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   551
 void avahi_s_entry_group_reset(AvahiSEntryGroup *g) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   552
     AvahiEntry *e;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   553
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   554
+    AvahiService *s;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   555
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   556
     assert(g);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   557
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   558
     for (e = g->entries; e; e = e->by_group_next) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   559
         if (!e->dead) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   560
+#ifndef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   561
             avahi_goodbye_entry(g->server, e, 1, 1);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   562
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   563
             e->dead = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   564
         }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   565
     }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   566
     g->server->need_entry_cleanup = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   567
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   568
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   569
+    for (s = g->services; s; s = s->services_next) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   570
+        s->dead = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   571
+    }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   572
+    g->server->need_service_cleanup = 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   573
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   574
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   575
     g->n_probing = 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   576
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   577
     avahi_s_entry_group_change_state(g, AVAHI_ENTRY_GROUP_UNCOMMITED);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   578
@@ -1222,12 +1630,23 @@
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   579
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   580
 int avahi_s_entry_group_is_empty(AvahiSEntryGroup *g) {
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   581
     AvahiEntry *e;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   582
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   583
+    AvahiService *s;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   584
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   585
+
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   586
     assert(g);
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   587
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   588
+#ifdef HAVE_BONJOUR
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   589
+    for (s = g->services; s; s = s->services_next)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   590
+        if (!s->dead)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   591
+            return 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   592
+#else
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   593
     /* Look for an entry that is not dead */
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   594
     for (e = g->entries; e; e = e->by_group_next)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   595
         if (!e->dead)
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   596
             return 0;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   597
+#endif
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   598
 
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   599
     return 1;
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   600
 }
0da26ce015ab 22071322 Build of pkg:/system/network/avahi has to be moved from Desktop to Userland.
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   601
+