annotate libpurple/protocols/bonjour/mdns_avahi.c @ 18859:c1546f6c0432

Yay for code reuse.
author Daniel Atallah <daniel.atallah@gmail.com>
date Fri, 10 Aug 2007 01:29:48 +0000
parents f773aa054dca
children affacee881e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
1 /*
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
2 * This program is free software; you can redistribute it and/or modify
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
3 * it under the terms of the GNU General Public License as published by
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
4 * the Free Software Foundation; either version 2 of the License, or
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
5 * (at your option) any later version.
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
6 *
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
7 * This program is distributed in the hope that it will be useful,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
10 * GNU Library General Public License for more details.
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
11 *
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
12 * You should have received a copy of the GNU General Public License
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
13 * along with this program; if not, write to the Free Software
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
15 */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
16
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
17 #include "internal.h"
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
18
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
19 #include "mdns_interface.h"
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
20 #include "debug.h"
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
21 #include "buddy.h"
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
22 #include "bonjour.h"
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
23
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
24 #include <avahi-client/client.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
25 #include <avahi-client/lookup.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
26 #include <avahi-client/publish.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
27
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
28 #include <avahi-common/address.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
29 #include <avahi-common/malloc.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
30 #include <avahi-common/error.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
31 #include <avahi-common/strlst.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
32
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
33 #include <avahi-glib/glib-malloc.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
34 #include <avahi-glib/glib-watch.h>
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
35
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
36 /* For some reason, this is missing from the Avahi type defines */
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
37 #ifndef AVAHI_DNS_TYPE_NULL
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
38 #define AVAHI_DNS_TYPE_NULL 0x0A
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
39 #endif
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
40
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
41 /* data used by avahi bonjour implementation */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
42 typedef struct _avahi_session_impl_data {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
43 AvahiClient *client;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
44 AvahiGLibPoll *glib_poll;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
45 AvahiServiceBrowser *sb;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
46 AvahiEntryGroup *group;
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
47 AvahiEntryGroup *buddy_icon_group;
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
48 } AvahiSessionImplData;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
49
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
50 typedef struct _avahi_buddy_impl_data {
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
51 AvahiServiceResolver *resolver;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
52 AvahiRecordBrowser *buddy_icon_rec_browser;
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
53 } AvahiBuddyImplData;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
54
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
55 static void
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
56 _resolver_callback(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiProtocol protocol,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
57 AvahiResolverEvent event, const char *name, const char *type, const char *domain,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
58 const char *host_name, const AvahiAddress *a, uint16_t port, AvahiStringList *txt,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
59 AvahiLookupResultFlags flags, void *userdata) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
60
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
61 BonjourBuddy *buddy;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
62 PurpleAccount *account = userdata;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
63 AvahiStringList *l;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
64 size_t size;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
65 char *key, *value;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
66 int ret;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
67
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
68 g_return_if_fail(r != NULL);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
69
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
70 switch (event) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
71 case AVAHI_RESOLVER_FAILURE:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
72 purple_debug_error("bonjour", "_resolve_callback - Failure: %s\n",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
73 avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(r))));
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
74 avahi_service_resolver_free(r);
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
75 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
76 case AVAHI_RESOLVER_FOUND:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
77 /* create a buddy record */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
78 buddy = bonjour_buddy_new(name, account);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
79
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
80 ((AvahiBuddyImplData *)buddy->mdns_impl_data)->resolver = r;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
81
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
82 /* Get the ip as a string */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
83 buddy->ip = g_malloc(AVAHI_ADDRESS_STR_MAX);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
84 avahi_address_snprint(buddy->ip, AVAHI_ADDRESS_STR_MAX, a);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
85
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
86 buddy->port_p2pj = port;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
87
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
88 /* Obtain the parameters from the text_record */
18858
f773aa054dca Clear bonjour buddy values before resetting them so that we notice value removals.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18850
diff changeset
89 clear_bonjour_buddy_values(buddy);
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
90 l = txt;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
91 while (l != NULL) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
92 ret = avahi_string_list_get_pair(l, &key, &value, &size);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
93 l = l->next;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
94 if (ret < 0)
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
95 continue;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
96 set_bonjour_buddy_value(buddy, key, value, size);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
97 /* TODO: Since we're using the glib allocator, I think we
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
98 * can use the values instead of re-copying them */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
99 avahi_free(key);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
100 avahi_free(value);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
101 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
102
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
103 if (!bonjour_buddy_check(buddy))
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
104 bonjour_buddy_delete(buddy);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
105 else
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
106 /* Add or update the buddy in our buddy list */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
107 bonjour_buddy_add_to_purple(buddy);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
108
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
109 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
110 default:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
111 purple_debug_info("bonjour", "Unrecognized Service Resolver event: %d.\n", event);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
112 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
113
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
114 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
115
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
116 static void
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
117 _browser_callback(AvahiServiceBrowser *b, AvahiIfIndex interface,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
118 AvahiProtocol protocol, AvahiBrowserEvent event,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
119 const char *name, const char *type, const char *domain,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
120 AvahiLookupResultFlags flags, void *userdata) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
121
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
122 PurpleAccount *account = userdata;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
123 PurpleBuddy *gb = NULL;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
124
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
125 switch (event) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
126 case AVAHI_BROWSER_FAILURE:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
127 purple_debug_error("bonjour", "_browser_callback - Failure: %s\n",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
128 avahi_strerror(avahi_client_errno(avahi_service_browser_get_client(b))));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
129 /* TODO: This is an error that should be handled. */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
130 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
131 case AVAHI_BROWSER_NEW:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
132 /* A new peer has joined the network and uses iChat bonjour */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
133 purple_debug_info("bonjour", "_browser_callback - new service\n");
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
134 /* Make sure it isn't us */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
135 if (g_ascii_strcasecmp(name, account->username) != 0) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
136 if (!avahi_service_resolver_new(avahi_service_browser_get_client(b),
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
137 interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
138 0, _resolver_callback, account)) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
139 purple_debug_warning("bonjour", "_browser_callback -- Error initiating resolver: %s\n",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
140 avahi_strerror(avahi_client_errno(avahi_service_browser_get_client(b))));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
141 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
142 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
143 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
144 case AVAHI_BROWSER_REMOVE:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
145 purple_debug_info("bonjour", "_browser_callback - Remove service\n");
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
146 gb = purple_find_buddy(account, name);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
147 if (gb != NULL) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
148 bonjour_buddy_delete(gb->proto_data);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
149 purple_blist_remove_buddy(gb);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
150 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
151 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
152 case AVAHI_BROWSER_ALL_FOR_NOW:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
153 case AVAHI_BROWSER_CACHE_EXHAUSTED:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
154 purple_debug_warning("bonjour", "(Browser) %s\n",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
155 event == AVAHI_BROWSER_CACHE_EXHAUSTED ? "CACHE_EXHAUSTED" : "ALL_FOR_NOW");
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
156 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
157 default:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
158 purple_debug_info("bonjour", "Unrecognized Service browser event: %d.\n", event);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
159 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
160 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
161
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
162 static void
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
163 _buddy_icon_group_cb(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
164 BonjourDnsSd *data = userdata;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
165 AvahiSessionImplData *idata = data->mdns_impl_data;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
166
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
167 g_return_if_fail(g == idata->buddy_icon_group || idata->buddy_icon_group == NULL);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
168
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
169 switch(state) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
170 case AVAHI_ENTRY_GROUP_ESTABLISHED:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
171 purple_debug_info("bonjour", "Successfully registered buddy icon data.\n");
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
172 case AVAHI_ENTRY_GROUP_COLLISION:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
173 purple_debug_error("bonjour", "Collision registering buddy icon data.\n");
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
174 break;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
175 case AVAHI_ENTRY_GROUP_FAILURE:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
176 purple_debug_error("bonjour", "Error registering buddy icon data: %s\n.",
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
177 avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))));
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
178 break;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
179 case AVAHI_ENTRY_GROUP_UNCOMMITED:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
180 case AVAHI_ENTRY_GROUP_REGISTERING:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
181 break;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
182 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
183
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
184 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
185
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
186 static void
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
187 _entry_group_cb(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
188 AvahiSessionImplData *idata = userdata;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
189
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
190 g_return_if_fail(g == idata->group || idata->group == NULL);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
191
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
192 switch(state) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
193 case AVAHI_ENTRY_GROUP_ESTABLISHED:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
194 purple_debug_info("bonjour", "Successfully registered service.\n");
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
195 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
196 case AVAHI_ENTRY_GROUP_COLLISION:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
197 purple_debug_error("bonjour", "Collision registering entry group.\n");
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
198 /* TODO: Handle error - this should log out the account. (Possibly with "wants to die")*/
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
199 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
200 case AVAHI_ENTRY_GROUP_FAILURE:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
201 purple_debug_error("bonjour", "Error registering entry group: %s\n.",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
202 avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
203 /* TODO: Handle error - this should log out the account.*/
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
204 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
205 case AVAHI_ENTRY_GROUP_UNCOMMITED:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
206 case AVAHI_ENTRY_GROUP_REGISTERING:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
207 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
208 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
209
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
210 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
211
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
212 static void
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
213 _buddy_icon_record_cb(AvahiRecordBrowser *b, AvahiIfIndex interface, AvahiProtocol protocol,
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
214 AvahiBrowserEvent event, const char *name, uint16_t clazz, uint16_t type,
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
215 const void *rdata, size_t size, AvahiLookupResultFlags flags, void *userdata) {
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
216 BonjourBuddy *buddy = userdata;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
217 AvahiBuddyImplData *idata = buddy->mdns_impl_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
218
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
219 switch (event) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
220 case AVAHI_BROWSER_NEW:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
221 bonjour_buddy_got_buddy_icon(buddy, rdata, size);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
222 break;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
223 case AVAHI_BROWSER_REMOVE:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
224 case AVAHI_BROWSER_CACHE_EXHAUSTED:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
225 case AVAHI_BROWSER_ALL_FOR_NOW:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
226 case AVAHI_BROWSER_FAILURE:
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
227 purple_debug_error("bonjour", "Error rerieving buddy icon record: %s\n",
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
228 avahi_strerror(avahi_client_errno(avahi_record_browser_get_client(b))));
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
229 break;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
230 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
231
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
232 /* Stop listening */
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
233 avahi_record_browser_free(idata->buddy_icon_rec_browser);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
234 idata->buddy_icon_rec_browser = NULL;
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
235 }
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
236
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
237 /****************************
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
238 * mdns_interface functions *
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
239 ****************************/
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
240
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
241 gboolean _mdns_init_session(BonjourDnsSd *data) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
242 AvahiSessionImplData *idata = g_new0(AvahiSessionImplData, 1);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
243 const AvahiPoll *poll_api;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
244 int error;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
245
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
246 /* Tell avahi to use g_malloc and g_free */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
247 avahi_set_allocator (avahi_glib_allocator ());
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
248
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
249 /* This currently depends on the glib mainloop,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
250 * we should make it use the libpurple abstraction */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
251
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
252 idata->glib_poll = avahi_glib_poll_new(NULL, G_PRIORITY_DEFAULT);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
253
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
254 poll_api = avahi_glib_poll_get(idata->glib_poll);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
255
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
256 idata->client = avahi_client_new(poll_api, 0, NULL, data, &error);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
257
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
258 if (idata->client == NULL) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
259 purple_debug_error("bonjour", "Error initializing Avahi: %s", avahi_strerror(error));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
260 avahi_glib_poll_free(idata->glib_poll);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
261 g_free(idata);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
262 return FALSE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
263 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
264
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
265 data->mdns_impl_data = idata;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
266
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
267 return TRUE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
268 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
269
18859
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
270 gboolean _mdns_publish(BonjourDnsSd *data, PublishType type, GSList *records) {
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
271 int publish_result = 0;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
272 AvahiSessionImplData *idata = data->mdns_impl_data;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
273 AvahiStringList *lst = NULL;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
274
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
275 g_return_val_if_fail(idata != NULL, FALSE);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
276
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
277 if (!idata->group) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
278 idata->group = avahi_entry_group_new(idata->client,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
279 _entry_group_cb, idata);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
280 if (!idata->group) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
281 purple_debug_error("bonjour",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
282 "Unable to initialize the data for the mDNS (%s).\n",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
283 avahi_strerror(avahi_client_errno(idata->client)));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
284 return FALSE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
285 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
286 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
287
18859
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
288 while (records) {
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
289 PurpleKeyValuePair *kvp = records->data;
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
290 lst = avahi_string_list_add_pair(lst, kvp->key, kvp->value);
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
291 records = records->next;
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
292 }
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
293
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
294 /* Publish the service */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
295 switch (type) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
296 case PUBLISH_START:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
297 publish_result = avahi_entry_group_add_service_strlst(
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
298 idata->group, AVAHI_IF_UNSPEC,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
299 AVAHI_PROTO_UNSPEC, 0,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
300 purple_account_get_username(data->account),
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
301 ICHAT_SERVICE, NULL, NULL, data->port_p2pj, lst);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
302 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
303 case PUBLISH_UPDATE:
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
304 publish_result = avahi_entry_group_update_service_txt_strlst(
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
305 idata->group, AVAHI_IF_UNSPEC,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
306 AVAHI_PROTO_UNSPEC, 0,
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
307 purple_account_get_username(data->account),
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
308 ICHAT_SERVICE, NULL, lst);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
309 break;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
310 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
311
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
312 /* Free the memory used by temp data */
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
313 avahi_string_list_free(lst);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
314
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
315 if (publish_result < 0) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
316 purple_debug_error("bonjour",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
317 "Failed to add the " ICHAT_SERVICE " service. Error: %s\n",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
318 avahi_strerror(publish_result));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
319 return FALSE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
320 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
321
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
322 if (type == PUBLISH_START
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
323 && (publish_result = avahi_entry_group_commit(idata->group)) < 0) {
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
324 purple_debug_error("bonjour",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
325 "Failed to commit " ICHAT_SERVICE " service. Error: %s\n",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
326 avahi_strerror(publish_result));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
327 return FALSE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
328 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
329
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
330 return TRUE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
331 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
332
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
333 gboolean _mdns_browse(BonjourDnsSd *data) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
334 AvahiSessionImplData *idata = data->mdns_impl_data;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
335
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
336 g_return_val_if_fail(idata != NULL, FALSE);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
337
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
338 idata->sb = avahi_service_browser_new(idata->client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, ICHAT_SERVICE, NULL, 0, _browser_callback, data->account);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
339 if (!idata->sb) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
340
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
341 purple_debug_error("bonjour",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
342 "Unable to initialize service browser. Error: %s\n.",
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
343 avahi_strerror(avahi_client_errno(idata->client)));
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
344 return FALSE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
345 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
346
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
347 return TRUE;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
348 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
349
18845
09f52521ff5b Fix bonjour buddy icons to work with iChat.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18843
diff changeset
350 gboolean _mdns_set_buddy_icon_data(BonjourDnsSd *data, gconstpointer avatar_data, gsize avatar_len) {
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
351 AvahiSessionImplData *idata = data->mdns_impl_data;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
352
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
353 if (idata == NULL || idata->client == NULL)
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
354 return FALSE;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
355
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
356 if (avatar_data != NULL) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
357 gboolean new_group = FALSE;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
358 gchar *svc_name;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
359 int ret;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
360 AvahiPublishFlags flags = 0;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
361
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
362 if (idata->buddy_icon_group == NULL) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
363 purple_debug_info("bonjour", "Setting new buddy icon.\n");
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
364 new_group = TRUE;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
365
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
366 idata->buddy_icon_group = avahi_entry_group_new(idata->client,
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
367 _buddy_icon_group_cb, data);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
368 } else {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
369 purple_debug_info("bonjour", "Updating existing buddy icon.\n");
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
370 flags |= AVAHI_PUBLISH_UPDATE;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
371 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
372
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
373 if (idata->buddy_icon_group == NULL) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
374 purple_debug_error("bonjour",
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
375 "Unable to initialize the buddy icon group (%s).\n",
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
376 avahi_strerror(avahi_client_errno(idata->client)));
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
377 return FALSE;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
378 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
379
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
380 svc_name = g_strdup_printf("%s." ICHAT_SERVICE "local",
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
381 purple_account_get_username(data->account));
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
382
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
383 ret = avahi_entry_group_add_record(idata->buddy_icon_group, AVAHI_IF_UNSPEC,
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
384 AVAHI_PROTO_UNSPEC, flags, svc_name,
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
385 AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_NULL, 120, avatar_data, avatar_len);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
386
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
387 g_free(svc_name);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
388
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
389 if (ret < 0) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
390 purple_debug_error("bonjour",
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
391 "Failed to register buddy icon. Error: %s\n", avahi_strerror(ret));
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
392 if (new_group) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
393 avahi_entry_group_free(idata->buddy_icon_group);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
394 idata->buddy_icon_group = NULL;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
395 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
396 return FALSE;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
397 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
398
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
399 if (new_group && (ret = avahi_entry_group_commit(idata->buddy_icon_group)) < 0) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
400 purple_debug_error("bonjour",
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
401 "Failed to commit buddy icon group. Error: %s\n", avahi_strerror(ret));
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
402 if (new_group) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
403 avahi_entry_group_free(idata->buddy_icon_group);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
404 idata->buddy_icon_group = NULL;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
405 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
406 return FALSE;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
407 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
408 } else if (idata->buddy_icon_group != NULL) {
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
409 purple_debug_info("bonjour", "Removing existing buddy icon.\n");
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
410 avahi_entry_group_free(idata->buddy_icon_group);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
411 idata->buddy_icon_group = NULL;
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
412 }
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
413
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
414 return TRUE;
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
415 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
416
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
417 void _mdns_stop(BonjourDnsSd *data) {
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
418 AvahiSessionImplData *idata = data->mdns_impl_data;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
419
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
420 if (idata == NULL || idata->client == NULL)
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
421 return;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
422
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
423 if (idata->sb != NULL)
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
424 avahi_service_browser_free(idata->sb);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
425
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
426 avahi_client_free(idata->client);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
427 avahi_glib_poll_free(idata->glib_poll);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
428
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
429 g_free(idata);
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
430
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
431 data->mdns_impl_data = NULL;
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
432 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
433
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
434 void _mdns_init_buddy(BonjourBuddy *buddy) {
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
435 buddy->mdns_impl_data = g_new0(AvahiBuddyImplData, 1);
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
436 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
437
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
438 void _mdns_delete_buddy(BonjourBuddy *buddy) {
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
439 AvahiBuddyImplData *idata = buddy->mdns_impl_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
440
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
441 g_return_if_fail(idata != NULL);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
442
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
443 if (idata->buddy_icon_rec_browser != NULL)
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
444 avahi_record_browser_free(idata->buddy_icon_rec_browser);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
445
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
446 if (idata->resolver != NULL)
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
447 avahi_service_resolver_free(idata->resolver);
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
448
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
449 g_free(idata);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
450
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
451 buddy->mdns_impl_data = NULL;
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
452 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
453
18849
1787e601aafc _mdns_retrieve_retrieve_buddy_icon() - what kind of crack am I on anyway?
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18848
diff changeset
454 void _mdns_retrieve_buddy_icon(BonjourBuddy* buddy) {
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
455 PurpleConnection *conn = purple_account_get_connection(buddy->account);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
456 BonjourData *bd = conn->proto_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
457 AvahiSessionImplData *session_idata = bd->dns_sd_data->mdns_impl_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
458 AvahiBuddyImplData *idata = buddy->mdns_impl_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
459 gchar *name;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
460
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
461 g_return_if_fail(idata != NULL);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
462
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
463 if (idata->buddy_icon_rec_browser != NULL)
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
464 avahi_record_browser_free(idata->buddy_icon_rec_browser);
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
465
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
466 purple_debug_info("bonjour", "Retrieving buddy icon for '%s'.\n", buddy->name);
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
467
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
468 name = g_strdup_printf("%s." ICHAT_SERVICE "local", buddy->name);
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
469 idata->buddy_icon_rec_browser = avahi_record_browser_new(session_idata->client, AVAHI_IF_UNSPEC,
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
470 AVAHI_PROTO_UNSPEC, name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_NULL, 0,
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
471 _buddy_icon_record_cb, buddy);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
472 g_free(name);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
473
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
474 if (!idata->buddy_icon_rec_browser) {
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
475 purple_debug_error("bonjour",
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
476 "Unable to initialize buddy icon record browser. Error: %s\n.",
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
477 avahi_strerror(avahi_client_errno(session_idata->client)));
18850
2283d5bfc24b Implement setting buddy icons for avahi implementation. Fix receiving status changes and some other fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18849
diff changeset
478 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
479
18805
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
480 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
481