annotate libpurple/protocols/bonjour/mdns_avahi.c @ 29027:9feec7d1d95c

jabber: Add the missing file and fix up the Google session namespaces
author Paul Aurich <paul@darkrain42.org>
date Thu, 26 Nov 2009 22:47:53 +0000
parents 9d6e1327f614
children 755219afed9f
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
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19653
diff changeset
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
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
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
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
36 /* Avahi only defines the types that it actually uses (which at this time doesn't include NULL) */
18830
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
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
50 typedef struct _avahi_buddy_service_resolver_data {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
51 AvahiServiceResolver *resolver;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
52 AvahiIfIndex interface;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
53 AvahiProtocol protocol;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
54 gchar *name;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
55 gchar *type;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
56 gchar *domain;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
57 /* This is a reference to the entry in BonjourBuddy->ips */
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
58 const char *ip;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
59 } AvahiSvcResolverData;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
60
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
61 typedef struct _avahi_buddy_impl_data {
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
62 GSList *resolvers;
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
63 AvahiRecordBrowser *buddy_icon_rec_browser;
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
64 } AvahiBuddyImplData;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
65
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
66 static gint
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
67 _find_resolver_data(gconstpointer a, gconstpointer b) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
68 const AvahiSvcResolverData *rd_a = a;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
69 const AvahiSvcResolverData *rd_b = b;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
70 gint ret = 1;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
71
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
72 if(rd_a->interface == rd_b->interface
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
73 && rd_a->protocol == rd_b->protocol
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
74 && !strcmp(rd_a->name, rd_b->name)
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
75 && !strcmp(rd_a->type, rd_b->type)
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
76 && !strcmp(rd_a->domain, rd_b->domain)) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
77 ret = 0;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
78 }
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
79
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
80 return ret;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
81 }
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
82
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
83 static gint
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
84 _find_resolver_data_by_resolver(gconstpointer a, gconstpointer b) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
85 const AvahiSvcResolverData *rd_a = a;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
86 const AvahiServiceResolver *resolver = b;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
87 gint ret = 1;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
88
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
89 if(rd_a->resolver == resolver)
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
90 ret = 0;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
91
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
92 return ret;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
93 }
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
94
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
95 static void
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
96 _cleanup_resolver_data(AvahiSvcResolverData *rd) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
97 if (rd->resolver)
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
98 avahi_service_resolver_free(rd->resolver);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
99 g_free(rd->name);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
100 g_free(rd->type);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
101 g_free(rd->domain);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
102 g_free(rd);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
103 }
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
104
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
105
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
106 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
107 _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
108 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
109 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
110 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
111
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
112 PurpleBuddy *pb;
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
113 BonjourBuddy *bb;
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
114 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
115 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
116 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
117 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
118 int ret;
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
119 char ip[AVAHI_ADDRESS_STR_MAX];
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
120 AvahiBuddyImplData *b_impl;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
121 AvahiSvcResolverData *rd;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
122 GSList *res;
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
123
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 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
125
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
126 pb = purple_find_buddy(account, name);
25282
252e26edb7a9 Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents: 22977
diff changeset
127 bb = (pb != NULL) ? purple_buddy_get_protocol_data(pb) : NULL;
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
128
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
129 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
130 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
131 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
132 avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(r))));
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
133
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
134 avahi_service_resolver_free(r);
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
135 if (bb != NULL) {
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
136 b_impl = bb->mdns_impl_data;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
137 res = g_slist_find_custom(b_impl->resolvers, r, _find_resolver_data_by_resolver);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
138 if (res != NULL) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
139 rd = res->data;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
140 b_impl->resolvers = g_slist_remove_link(b_impl->resolvers, res);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
141
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
142 /* We've already freed the resolver */
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
143 rd->resolver = NULL;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
144 _cleanup_resolver_data(rd);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
145
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
146 /* If this was the last resolver, remove the buddy */
22977
d50194ab3016 Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22052
diff changeset
147 if (b_impl->resolvers == NULL)
d50194ab3016 Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22052
diff changeset
148 bonjour_buddy_signed_off(pb);
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
149 }
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
150 }
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
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_RESOLVER_FOUND:
28886
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
153
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
154 purple_debug_info("bonjour", "_resolve_callback - name:%s account:%p bb:%p\n",
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
155 name, account, bb);
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
156
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
157 /* create a buddy record */
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
158 if (bb == NULL)
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
159 bb = bonjour_buddy_new(name, account);
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
160 b_impl = bb->mdns_impl_data;
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
161
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
162 /* If we're reusing an existing buddy, it may be a new resolver or an existing one. */
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
163 res = g_slist_find_custom(b_impl->resolvers, r, _find_resolver_data_by_resolver);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
164 if (res != NULL)
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
165 rd = res->data;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
166 else {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
167 rd = g_new0(AvahiSvcResolverData, 1);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
168 rd->resolver = r;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
169 rd->interface = interface;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
170 rd->protocol = protocol;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
171 rd->name = g_strdup(name);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
172 rd->type = g_strdup(type);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
173 rd->domain = g_strdup(domain);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
174
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
175 b_impl->resolvers = g_slist_prepend(b_impl->resolvers, rd);
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
176 }
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
177
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
178
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
179 /* Get the ip as a string */
28886
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
180 ip[0] = '\0';
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
181 avahi_address_snprint(ip, AVAHI_ADDRESS_STR_MAX, a);
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
182
28886
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
183 purple_debug_info("bonjour", "_resolve_callback - name:%s ip:%s prev_ip:%s\n",
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
184 name, ip, rd->ip);
9d6e1327f614 Add some additional debug output to the avahi mdns implemenation.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28138
diff changeset
185
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
186 if (rd->ip == NULL || strcmp(rd->ip, ip) != 0) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
187 /* We store duplicates in bb->ips, so we always remove the one */
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
188 if (rd->ip != NULL) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
189 bb->ips = g_slist_remove(bb->ips, rd->ip);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
190 g_free((gchar *) rd->ip);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
191 }
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
192 bb->ips = g_slist_prepend(bb->ips, g_strdup(ip));
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
193 rd->ip = bb->ips->data;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
194 }
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
195
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
196 bb->port_p2pj = port;
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
197
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 /* Obtain the parameters from the text_record */
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
199 clear_bonjour_buddy_values(bb);
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
200 for(l = txt; l != NULL; l = l->next) {
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
201 if ((ret = avahi_string_list_get_pair(l, &key, &value, &size)) < 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
202 continue;
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
203 set_bonjour_buddy_value(bb, key, value, size);
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
204 /* 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
205 * 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
206 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
207 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
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
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
210 if (!bonjour_buddy_check(bb)) {
28138
deecc1d663c4 Don't use pointers (even opaquely) once they're freed. Closes #9822.
Paul Aurich <paul@darkrain42.org>
parents: 27021
diff changeset
211 b_impl->resolvers = g_slist_remove(b_impl->resolvers, rd);
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
212 _cleanup_resolver_data(rd);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
213 /* If this was the last resolver, remove the buddy */
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
214 if (b_impl->resolvers == NULL) {
22977
d50194ab3016 Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22052
diff changeset
215 if (pb != NULL)
d50194ab3016 Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22052
diff changeset
216 bonjour_buddy_signed_off(pb);
d50194ab3016 Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22052
diff changeset
217 else
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
218 bonjour_buddy_delete(bb);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
219 }
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
220 } else
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
221 /* Add or update the buddy in our buddy list */
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
222 bonjour_buddy_add_to_purple(bb, pb);
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
223
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
224 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
225 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
226 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
227 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
228
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
229 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
230
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
231 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
232 _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
233 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
234 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
235 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
236
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 PurpleAccount *account = userdata;
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
238 PurpleBuddy *pb = 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
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 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
241 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
242 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
243 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
244 /* 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
245 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
246 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
247 /* 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
248 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
249 /* Make sure it isn't us */
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
250 if (purple_utf8_strcasecmp(name, account->username) != 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
251 if (!avahi_service_resolver_new(avahi_service_browser_get_client(b),
21696
fded60f269bc Don't advertise our presence in avahi on IPv6 or listen for sevices since we don't support receiving connections from or connecting to IPv6 buddies. If someone needs to do that, they can submit a patch. Fixes #4188.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21527
diff changeset
252 interface, protocol, name, type, domain, AVAHI_PROTO_INET,
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
253 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
254 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
255 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
256 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 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
259 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
260 purple_debug_info("bonjour", "_browser_callback - Remove service\n");
19573
affacee881e8 Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18859
diff changeset
261 pb = purple_find_buddy(account, name);
21527
5b9da9db7e81 Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19680
diff changeset
262 if (pb != NULL) {
25282
252e26edb7a9 Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents: 22977
diff changeset
263 BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
264 AvahiBuddyImplData *b_impl;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
265 GSList *l;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
266 AvahiSvcResolverData *rd_search;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
267
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
268 g_return_if_fail(bb != NULL);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
269
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
270 b_impl = bb->mdns_impl_data;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
271
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
272 /* There may be multiple presences, we should only get rid of this one */
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
273
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
274 rd_search = g_new0(AvahiSvcResolverData, 1);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
275 rd_search->interface = interface;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
276 rd_search->protocol = protocol;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
277 rd_search->name = (gchar *) name;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
278 rd_search->type = (gchar *) type;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
279 rd_search->domain = (gchar *) domain;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
280
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
281 l = g_slist_find_custom(b_impl->resolvers, rd_search, _find_resolver_data);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
282
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
283 g_free(rd_search);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
284
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
285 if (l != NULL) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
286 AvahiSvcResolverData *rd = l->data;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
287 b_impl->resolvers = g_slist_remove(b_impl->resolvers, rd);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
288 /* This IP is no longer available */
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
289 if (rd->ip != NULL) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
290 bb->ips = g_slist_remove(bb->ips, rd->ip);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
291 g_free((gchar *) rd->ip);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
292 }
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
293 _cleanup_resolver_data(rd);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
294
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
295 /* If this was the last resolver, remove the buddy */
22977
d50194ab3016 Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22052
diff changeset
296 if (b_impl->resolvers == NULL)
d50194ab3016 Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22052
diff changeset
297 bonjour_buddy_signed_off(pb);
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
298 }
21527
5b9da9db7e81 Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19680
diff changeset
299 }
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
300 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
301 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
302 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
303 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
304 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
305 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
306 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 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
310 _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
311 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
312 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
313
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
314 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
315
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
316 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
317 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
318 purple_debug_info("bonjour", "Successfully registered buddy icon data.\n");
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
319 break;
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
320 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
321 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
322 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
323 case AVAHI_ENTRY_GROUP_FAILURE:
19653
941965d6fd88 Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19573
diff changeset
324 purple_debug_error("bonjour", "Error registering buddy icon data: %s.\n",
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
325 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
326 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
327 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
328 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
329 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
330 }
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
331
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
332 }
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
333
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
334 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
335 _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
336 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
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 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
339
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 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
341 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
342 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
343 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
344 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
345 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
346 /* 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
347 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
348 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
349 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
350 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
351 /* 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
352 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
353 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
354 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
355 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
356 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
357
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
358 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
359
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
360 static void
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
361 _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
362 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
363 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
364 BonjourBuddy *buddy = userdata;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
365 AvahiBuddyImplData *idata = buddy->mdns_impl_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
366
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
367 switch (event) {
27021
e40a30c883cc Correctly ignore Avahi's informational events when querying records for the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25282
diff changeset
368 case AVAHI_BROWSER_CACHE_EXHAUSTED:
e40a30c883cc Correctly ignore Avahi's informational events when querying records for the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25282
diff changeset
369 case AVAHI_BROWSER_ALL_FOR_NOW:
e40a30c883cc Correctly ignore Avahi's informational events when querying records for the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25282
diff changeset
370 /* Ignore these "meta" informational events */
e40a30c883cc Correctly ignore Avahi's informational events when querying records for the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25282
diff changeset
371 return;
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
372 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
373 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
374 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
375 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
376 case AVAHI_BROWSER_FAILURE:
27021
e40a30c883cc Correctly ignore Avahi's informational events when querying records for the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25282
diff changeset
377 purple_debug_error("bonjour", "Error retrieving buddy icon record: %s\n",
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
378 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
379 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
380 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
381
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
382 /* Stop listening */
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
383 avahi_record_browser_free(b);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
384 if (idata->buddy_icon_rec_browser == b) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
385 idata->buddy_icon_rec_browser = NULL;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
386 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
387 }
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
388
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
389 /****************************
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
390 * 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
391 ****************************/
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
392
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
393 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
394 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
395 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
396 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
397
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
398 /* 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
399 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
400
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
401 /* 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
402 * 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
403
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
404 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
405
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
406 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
407
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
408 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
409
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
410 if (idata->client == NULL) {
19653
941965d6fd88 Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19573
diff changeset
411 purple_debug_error("bonjour", "Error initializing Avahi: %s\n", avahi_strerror(error));
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
412 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
413 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
414 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
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 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
418
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 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
420 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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
18859
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
422 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
423 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
424 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
425 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
426
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo 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 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
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 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
430 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
431 _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
432 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
433 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
434 "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
435 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
436 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
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 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
439
18859
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
440 while (records) {
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
441 PurpleKeyValuePair *kvp = records->data;
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
442 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
443 records = records->next;
c1546f6c0432 Yay for code reuse.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18858
diff changeset
444 }
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
445
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
446 /* 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
447 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
448 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
449 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
450 idata->group, AVAHI_IF_UNSPEC,
21696
fded60f269bc Don't advertise our presence in avahi on IPv6 or listen for sevices since we don't support receiving connections from or connecting to IPv6 buddies. If someone needs to do that, they can submit a patch. Fixes #4188.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21527
diff changeset
451 AVAHI_PROTO_INET, 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
452 purple_account_get_username(data->account),
22052
1be0d49532a1 Fix the _presence._tcp. record not to be referred to as the ICHAT_PRESENCE, that has been bothering me for a while.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21806
diff changeset
453 LINK_LOCAL_RECORD_NAME, NULL, NULL, data->port_p2pj, lst);
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
454 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
455 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
456 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
457 idata->group, AVAHI_IF_UNSPEC,
21696
fded60f269bc Don't advertise our presence in avahi on IPv6 or listen for sevices since we don't support receiving connections from or connecting to IPv6 buddies. If someone needs to do that, they can submit a patch. Fixes #4188.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21527
diff changeset
458 AVAHI_PROTO_INET, 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
459 purple_account_get_username(data->account),
22052
1be0d49532a1 Fix the _presence._tcp. record not to be referred to as the ICHAT_PRESENCE, that has been bothering me for a while.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21806
diff changeset
460 LINK_LOCAL_RECORD_NAME, NULL, lst);
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
461 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
462 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
463
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
464 /* 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
465 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
466
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
467 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
468 purple_debug_error("bonjour",
22052
1be0d49532a1 Fix the _presence._tcp. record not to be referred to as the ICHAT_PRESENCE, that has been bothering me for a while.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21806
diff changeset
469 "Failed to add the " LINK_LOCAL_RECORD_NAME " service. Error: %s\n",
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
470 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
471 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
472 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
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 (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
475 && (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
476 purple_debug_error("bonjour",
22052
1be0d49532a1 Fix the _presence._tcp. record not to be referred to as the ICHAT_PRESENCE, that has been bothering me for a while.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21806
diff changeset
477 "Failed to commit " LINK_LOCAL_RECORD_NAME " service. Error: %s\n",
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
478 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
479 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
480 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
481
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
482 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
483 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
484
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
485 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
486 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
487
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
488 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
489
22052
1be0d49532a1 Fix the _presence._tcp. record not to be referred to as the ICHAT_PRESENCE, that has been bothering me for a while.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21806
diff changeset
490 idata->sb = avahi_service_browser_new(idata->client, AVAHI_IF_UNSPEC, AVAHI_PROTO_INET, LINK_LOCAL_RECORD_NAME, NULL, 0, _browser_callback, data->account);
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
491 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
492
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
493 purple_debug_error("bonjour",
19653
941965d6fd88 Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19573
diff changeset
494 "Unable to initialize service browser. Error: %s.\n",
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
495 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
496 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
497 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
498
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
499 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
500 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
501
18845
09f52521ff5b Fix bonjour buddy icons to work with iChat.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18843
diff changeset
502 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
503 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
504
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
505 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
506 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
507
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
508 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
509 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
510 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
511 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
512 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
513
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
514 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
515 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
516 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
517
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
518 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
519 _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
520 } 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
521 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
522 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
523 }
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
524
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
525 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
526 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
527 "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
528 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
529 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
530 }
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
531
22052
1be0d49532a1 Fix the _presence._tcp. record not to be referred to as the ICHAT_PRESENCE, that has been bothering me for a while.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21806
diff changeset
532 svc_name = g_strdup_printf("%s." LINK_LOCAL_RECORD_NAME "local",
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
533 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
534
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
535 ret = avahi_entry_group_add_record(idata->buddy_icon_group, AVAHI_IF_UNSPEC,
21696
fded60f269bc Don't advertise our presence in avahi on IPv6 or listen for sevices since we don't support receiving connections from or connecting to IPv6 buddies. If someone needs to do that, they can submit a patch. Fixes #4188.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21527
diff changeset
536 AVAHI_PROTO_INET, flags, svc_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
537 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
538
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
539 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
540
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
541 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
542 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
543 "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
544 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
545 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
546 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
547 }
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
548 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
549 }
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
550
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
551 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
552 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
553 "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
554 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
555 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
556 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
557 }
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
558 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
559 }
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
560 } 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
561 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
562 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
563 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
564 }
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
565
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
566 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
567 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
568
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
569 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
570 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
571
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
572 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
573 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
574
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
575 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
576 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
577
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
578 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
579 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
580
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
581 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
582
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
583 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
584 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
585
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
586 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
587 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
588 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
589
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
590 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
591 AvahiBuddyImplData *idata = buddy->mdns_impl_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
592
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
593 g_return_if_fail(idata != NULL);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
594
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
595 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
596 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
597
21806
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
598 while(idata->resolvers != NULL) {
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
599 AvahiSvcResolverData *rd = idata->resolvers->data;
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
600 _cleanup_resolver_data(rd);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
601 idata->resolvers = g_slist_delete_link(idata->resolvers, idata->resolvers);
41959f031322 Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21696
diff changeset
602 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
603
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
604 g_free(idata);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
605
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
606 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
607 }
1244b5f43661 Here is a native avahi implementation of the bonjour prpl that I whipped up. Someone more autofoo savvy will probably want to review what I've done to that stuff. Fixes #326.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
608
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
609 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
610 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
611 BonjourData *bd = conn->proto_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
612 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
613 AvahiBuddyImplData *idata = buddy->mdns_impl_data;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
614 gchar *name;
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
615
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
616 g_return_if_fail(idata != NULL);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
617
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
618 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
619 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
620
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
621 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
622
22052
1be0d49532a1 Fix the _presence._tcp. record not to be referred to as the ICHAT_PRESENCE, that has been bothering me for a while.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21806
diff changeset
623 name = g_strdup_printf("%s." LINK_LOCAL_RECORD_NAME "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
624 idata->buddy_icon_rec_browser = avahi_record_browser_new(session_idata->client, AVAHI_IF_UNSPEC,
21696
fded60f269bc Don't advertise our presence in avahi on IPv6 or listen for sevices since we don't support receiving connections from or connecting to IPv6 buddies. If someone needs to do that, they can submit a patch. Fixes #4188.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21527
diff changeset
625 AVAHI_PROTO_INET, name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_NULL, 0,
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
626 _buddy_icon_record_cb, buddy);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
627 g_free(name);
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
628
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
629 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
630 purple_debug_error("bonjour",
19653
941965d6fd88 Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19573
diff changeset
631 "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
632 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
633 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
634
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
635 }
18830
2ae9b483c4db Avahi bonjour implementation of receiving buddy icons.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18805
diff changeset
636