libpurple/protocols/bonjour/bonjour.c

Thu, 05 Sep 2013 22:26:22 +0530

author
Ankit Vani <a@nevitus.org>
date
Thu, 05 Sep 2013 22:26:22 +0530
branch
soc.2013.gobjectification
changeset 34911
8b46f11b9e7e
parent 34910
60502558e400
child 35005
bff56dfca65d
child 36688
e49025233301
permissions
-rw-r--r--

Refactored bonjour and irc to use the GObject xfer API

11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
2 * purple - Bonjour Protocol Plugin
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
6 * source distribution.
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
7 *
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
12 *
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
17 *
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19842
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
21 */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 #include <glib.h>
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
23 #ifndef _WIN32
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
24 #include <pwd.h>
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
25 #else
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
26 #define UNICODE
23072
6e7c147d622a Bonjour build fixes for MSVC.
Daniel Atallah <datallah@pidgin.im>
parents: 22354
diff changeset
27 #include <winsock2.h>
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
28 #include <windows.h>
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
29 #include <lm.h>
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
30 #include "dns_sd_proxy.h"
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
31 #endif
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
32
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
33 #include "internal.h"
13061
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
34
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
35 #include "account.h"
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36 #include "accountopt.h"
13061
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
37 #include "debug.h"
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
38 #include "util.h"
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
39 #include "version.h"
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
41 #include "bonjour.h"
17596
45f6190fe54a This is a patch from Chris Davies to make Bonjour work on Windows using the Apple Bonjour framework. It turns out that the actual DNS-SD library is (3 clause) BSD licensed, so we can use it.
Daniel Atallah <datallah@pidgin.im>
parents: 16961
diff changeset
42 #include "mdns_common.h"
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
43 #include "jabber.h"
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
44 #include "buddy.h"
34911
8b46f11b9e7e Refactored bonjour and irc to use the GObject xfer API
Ankit Vani <a@nevitus.org>
parents: 34910
diff changeset
45 #include "bonjour_ft.h"
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
46
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
47 static char *default_firstname;
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
48 static char *default_lastname;
30825
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
49
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
50 const char *
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
51 bonjour_get_jid(PurpleAccount *account)
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
52 {
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
53 PurpleConnection *conn = purple_account_get_connection(account);
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
54 BonjourData *bd = purple_connection_get_protocol_data(conn);
30825
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
55 return bd->jid;
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
56 }
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
57
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
58 static void
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
59 bonjour_removeallfromlocal(PurpleConnection *conn, PurpleGroup *bonjour_group)
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
60 {
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
61 PurpleAccount *account = purple_connection_get_account(conn);
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
62 PurpleBlistNode *cnode, *cnodenext, *bnode, *bnodenext;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
63 PurpleBuddy *buddy;
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
64
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
65 if (bonjour_group == NULL)
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
66 return;
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
67
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
68 /* Go through and remove all buddies that belong to this account */
24557
093de9cb395c Fix Bonjour to work with the hidden structs, except for proto_data.
Richard Laager <rlaager@pidgin.im>
parents: 23850
diff changeset
69 for (cnode = purple_blist_node_get_first_child((PurpleBlistNode *) bonjour_group); cnode; cnode = cnodenext) {
093de9cb395c Fix Bonjour to work with the hidden structs, except for proto_data.
Richard Laager <rlaager@pidgin.im>
parents: 23850
diff changeset
70 cnodenext = purple_blist_node_get_sibling_next(cnode);
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
71 if (!PURPLE_IS_CONTACT(cnode))
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
72 continue;
24557
093de9cb395c Fix Bonjour to work with the hidden structs, except for proto_data.
Richard Laager <rlaager@pidgin.im>
parents: 23850
diff changeset
73 for (bnode = purple_blist_node_get_first_child(cnode); bnode; bnode = bnodenext) {
093de9cb395c Fix Bonjour to work with the hidden structs, except for proto_data.
Richard Laager <rlaager@pidgin.im>
parents: 23850
diff changeset
74 bnodenext = purple_blist_node_get_sibling_next(bnode);
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
75 if (!PURPLE_IS_BUDDY(bnode))
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
76 continue;
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
77 buddy = (PurpleBuddy *) bnode;
24557
093de9cb395c Fix Bonjour to work with the hidden structs, except for proto_data.
Richard Laager <rlaager@pidgin.im>
parents: 23850
diff changeset
78 if (purple_buddy_get_account(buddy) != account)
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
79 continue;
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
80 purple_account_remove_buddy(account, buddy, NULL);
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
81 purple_blist_remove_buddy(buddy);
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
82 }
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
83 }
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
84
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
85 }
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
86
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
87 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
88 bonjour_login(PurpleAccount *account)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
89 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
90 PurpleConnection *gc = purple_account_get_connection(account);
17632
b27a15168d33 Improve Bonjour error handling when there are errors "connecting".
Daniel Atallah <datallah@pidgin.im>
parents: 17608
diff changeset
91 BonjourData *bd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
92 PurpleStatus *status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
93 PurplePresence *presence;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
94
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
95 #ifdef _WIN32
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
96 if (!dns_sd_available()) {
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
97 purple_connection_error(gc,
27624
9dda0ba504a9 Change the wording in a connection error message. I'm trying to make
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
98 PURPLE_CONNECTION_ERROR_OTHER_ERROR,
9dda0ba504a9 Change the wording in a connection error message. I'm trying to make
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
99 _("Unable to find Apple's \"Bonjour for Windows\" toolkit, see "
33955
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 33883
diff changeset
100 "https://developer.pidgin.im/BonjourWindows for more "
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 33883
diff changeset
101 "information."));
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
102 return;
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
103 }
27624
9dda0ba504a9 Change the wording in a connection error message. I'm trying to make
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
104 #endif /* _WIN32 */
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
105
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
106 purple_connection_set_flags(gc, PURPLE_CONNECTION_FLAG_HTML);
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
107 bd = g_new0(BonjourData, 1);
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
108 purple_connection_set_protocol_data(gc, bd);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
109
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
110 /* Start waiting for jabber connections (iChat style) */
21944
c41d17a1b8d9 This is the second part of the fix to support having multiple presence records in Bonjour (and also supporting multiple presences using the same IP). Incoming conversations are no longer immediately attached to a buddy - we use an algorithm to match a conversation to a buddy based on the IP and, if possible the "from" attribute of the stream or the first tag in the stream. Thanks to Sjoerd Simons from Telepahy Salut for noticing and suggesting the algorithm. Fixes #4187. It'd be good if a few people test this.
Daniel Atallah <datallah@pidgin.im>
parents: 21720
diff changeset
111 bd->jabber_data = g_new0(BonjourJabber, 1);
29761
0f6862f2782f Implementation of IPv6 support for Bonjour
Daniel Atallah <datallah@pidgin.im>
parents: 29757
diff changeset
112 bd->jabber_data->socket = -1;
0f6862f2782f Implementation of IPv6 support for Bonjour
Daniel Atallah <datallah@pidgin.im>
parents: 29757
diff changeset
113 bd->jabber_data->socket6 = -1;
25641
cf74c04c6f41 Better support running many Bonjour clients on the same machine by allowing a
Daniel Atallah <datallah@pidgin.im>
parents: 25129
diff changeset
114 bd->jabber_data->port = purple_account_get_int(account, "port", BONJOUR_DEFAULT_PORT);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
115 bd->jabber_data->account = account;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
116
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
117 if (bonjour_jabber_start(bd->jabber_data) == -1) {
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
118 /* Send a message about the connection error */
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
119 purple_connection_error (gc,
27624
9dda0ba504a9 Change the wording in a connection error message. I'm trying to make
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
120 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
9dda0ba504a9 Change the wording in a connection error message. I'm trying to make
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
121 _("Unable to listen for incoming IM connections"));
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
122 return;
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
123 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
124
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
125 /* Connect to the mDNS daemon looking for buddies in the LAN */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
126 bd->dns_sd_data = bonjour_dns_sd_new();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
127 bd->dns_sd_data->first = g_strdup(purple_account_get_string(account, "first", default_firstname));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
128 bd->dns_sd_data->last = g_strdup(purple_account_get_string(account, "last", default_lastname));
13971
648326341d27 [gaim-migrate @ 16406]
Jonty Wareing
parents: 13968
diff changeset
129 bd->dns_sd_data->port_p2pj = bd->jabber_data->port;
17608
795ce8e3d44e Clean up Bonjour service publishing and improve XEP-0174 compliance.
Daniel Atallah <datallah@pidgin.im>
parents: 17596
diff changeset
130 /* Not engaged in AV conference */
795ce8e3d44e Clean up Bonjour service publishing and improve XEP-0174 compliance.
Daniel Atallah <datallah@pidgin.im>
parents: 17596
diff changeset
131 bd->dns_sd_data->vc = g_strdup("!");
11834
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
132
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
133 status = purple_account_get_active_status(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
134 presence = purple_account_get_presence(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
135 if (purple_presence_is_available(presence))
11834
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
136 bd->dns_sd_data->status = g_strdup("avail");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
137 else if (purple_presence_is_idle(presence))
11834
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
138 bd->dns_sd_data->status = g_strdup("away");
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
139 else
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
140 bd->dns_sd_data->status = g_strdup("dnd");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
141 bd->dns_sd_data->msg = g_strdup(purple_status_get_attr_string(status, "message"));
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
142
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
143 bd->dns_sd_data->account = account;
11927
f9ede13499d0 [gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents: 11841
diff changeset
144 if (!bonjour_dns_sd_start(bd->dns_sd_data))
f9ede13499d0 [gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents: 11841
diff changeset
145 {
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
146 purple_connection_error (gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
147 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20435
bc4b48f6fbaa Fix up Bonjour to use purple_connection_error_reason.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
148 _("Unable to establish connection with the local mDNS server. Is it running?"));
11927
f9ede13499d0 [gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents: 11841
diff changeset
149 return;
f9ede13499d0 [gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents: 11841
diff changeset
150 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
151
19204
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
152 bonjour_dns_sd_update_buddy_icon(bd->dns_sd_data);
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
153
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
154 /* Show the buddy list by telling Purple we have already connected */
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
155 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
156 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
157
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
158 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
159 bonjour_close(PurpleConnection *connection)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
160 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
161 PurpleGroup *bonjour_group;
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
162 BonjourData *bd = purple_connection_get_protocol_data(connection);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
163
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
164 bonjour_group = purple_blist_find_group(BONJOUR_GROUP_NAME);
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
165
21614
6a22a040ee83 Now that the buddies are being removed from the list correctly, it needs to happen before the dns_sd stuff is cleaned up when we disconnect so that it doesn't crash the avahi implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 21612
diff changeset
166 /* Remove all the bonjour buddies */
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
167 bonjour_removeallfromlocal(connection, bonjour_group);
21614
6a22a040ee83 Now that the buddies are being removed from the list correctly, it needs to happen before the dns_sd stuff is cleaned up when we disconnect so that it doesn't crash the avahi implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 21612
diff changeset
168
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
169 /* Stop looking for buddies in the LAN */
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
170 if (bd != NULL && bd->dns_sd_data != NULL)
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
171 {
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
172 bonjour_dns_sd_stop(bd->dns_sd_data);
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
173 bonjour_dns_sd_free(bd->dns_sd_data);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
174 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
175
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
176 if (bd != NULL && bd->jabber_data != NULL)
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
177 {
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
178 /* Stop waiting for conversations */
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
179 bonjour_jabber_stop(bd->jabber_data);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
180 g_free(bd->jabber_data);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
181 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
182
30250
6ada12bfce6d Fix a status change event being triggered for each online Bonjour buddy when you sign out.
Daniel Atallah <datallah@pidgin.im>
parents: 30138
diff changeset
183 /* Delete the bonjour group
6ada12bfce6d Fix a status change event being triggered for each online Bonjour buddy when you sign out.
Daniel Atallah <datallah@pidgin.im>
parents: 30138
diff changeset
184 * (purple_blist_remove_group will bail out if the group isn't empty)
6ada12bfce6d Fix a status change event being triggered for each online Bonjour buddy when you sign out.
Daniel Atallah <datallah@pidgin.im>
parents: 30138
diff changeset
185 */
13063
0dcbcfe1c9d7 [gaim-migrate @ 15425]
David Schmitt
parents: 13061
diff changeset
186 if (bonjour_group != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
187 purple_blist_remove_group(bonjour_group);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
188
21609
30ca7a909e62 Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents: 21524
diff changeset
189 /* Cancel any file transfers */
30ca7a909e62 Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents: 21524
diff changeset
190 while (bd != NULL && bd->xfer_lists) {
30ca7a909e62 Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents: 21524
diff changeset
191 purple_xfer_cancel_local(bd->xfer_lists->data);
30ca7a909e62 Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents: 21524
diff changeset
192 }
30ca7a909e62 Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents: 21524
diff changeset
193
30875
37e57d4ba633 Fix crash when attempting to log into a bonjour account and init failed
Daniel Atallah <datallah@pidgin.im>
parents: 30825
diff changeset
194 if (bd != NULL)
37e57d4ba633 Fix crash when attempting to log into a bonjour account and init failed
Daniel Atallah <datallah@pidgin.im>
parents: 30825
diff changeset
195 g_free(bd->jid);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20200
diff changeset
196 g_free(bd);
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
197 purple_connection_set_protocol_data(connection, NULL);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
198 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
199
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
200 static const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
201 bonjour_list_icon(PurpleAccount *account, PurpleBuddy *buddy)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
202 {
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
203 return BONJOUR_ICON_NAME;
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
204 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
205
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
206 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
207 bonjour_send_im(PurpleConnection *connection, const char *to, const char *msg, PurpleMessageFlags flags)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
208 {
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
209 BonjourData *bd = purple_connection_get_protocol_data(connection);
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
210
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
211 if(!to || !msg)
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
212 return 0;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
213
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
214 return bonjour_jabber_send_message(bd->jabber_data, to, msg);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
215 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
216
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
217 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
218 bonjour_set_status(PurpleAccount *account, PurpleStatus *status)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
219 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
220 PurpleConnection *gc;
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
221 BonjourData *bd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
222 PurplePresence *presence;
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
223 const char *message, *bonjour_status;
13061
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
224 gchar *stripped;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
225
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
226 gc = purple_account_get_connection(account);
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
227 bd = purple_connection_get_protocol_data(gc);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
228 presence = purple_account_get_presence(account);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
229
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
230 message = purple_status_get_attr_string(status, "message");
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
231 if (message == NULL)
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
232 message = "";
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
233 stripped = purple_markup_strip_html(message);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
234
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
235 /*
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
236 * The three possible status for Bonjour are
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
237 * -available ("avail")
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
238 * -idle ("away")
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
239 * -away ("dnd")
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
240 * Each of them can have an optional message.
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
241 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
242 if (purple_presence_is_available(presence))
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
243 bonjour_status = "avail";
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
244 else if (purple_presence_is_idle(presence))
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
245 bonjour_status = "away";
11835
da95d476b481 [gaim-migrate @ 14126]
Mark Doliner <markdoliner@pidgin.im>
parents: 11834
diff changeset
246 else
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
247 bonjour_status = "dnd";
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
248
13061
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
249 bonjour_dns_sd_send_status(bd->dns_sd_data, bonjour_status, stripped);
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
250 g_free(stripped);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
251 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
252
21720
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
253 /*
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
254 * The add_buddy callback removes the buddy from the local list.
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
255 * Bonjour manages buddies for you, and adding someone locally by
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
256 * hand is stupid. Perhaps we should change libpurple not to allow adding
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
257 * if there is no add_buddy callback.
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
258 */
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
259 static void
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32260
diff changeset
260 bonjour_fake_add_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group, const char *message) {
21720
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
261 purple_debug_error("bonjour", "Buddy '%s' manually added; removing. "
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
262 "Bonjour buddies must be discovered and not manually added.\n",
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
263 purple_buddy_get_name(buddy));
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
264
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
265 /* I suppose we could alert the user here, but it seems unnecessary. */
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
266
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
267 /* If this causes problems, it can be moved to an idle callback */
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
268 purple_blist_remove_buddy(buddy);
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
269 }
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
270
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
271
19748
ae5eab65f8de Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <datallah@pidgin.im>
parents: 19219
diff changeset
272 static void bonjour_remove_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group) {
24935
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
273 BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy);
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
274 if (bb) {
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
275 bonjour_buddy_delete(bb);
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
276 purple_buddy_set_protocol_data(buddy, NULL);
19748
ae5eab65f8de Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <datallah@pidgin.im>
parents: 19219
diff changeset
277 }
ae5eab65f8de Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <datallah@pidgin.im>
parents: 19219
diff changeset
278 }
ae5eab65f8de Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <datallah@pidgin.im>
parents: 19219
diff changeset
279
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
280 static GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
281 bonjour_status_types(PurpleAccount *account)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
282 {
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
283 GList *status_types = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
284 PurpleStatusType *type;
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
285
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
286 g_return_val_if_fail(account != NULL, NULL);
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
287
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
288 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
289 BONJOUR_STATUS_ID_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
290 NULL, TRUE, TRUE, FALSE,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
291 "message", _("Message"),
34810
8a3d21b27a22 Refactored bonjour, gg, irc and jabber to use GType and GValue instead of PurpleValue
Ankit Vani <a@nevitus.org>
parents: 34746
diff changeset
292 purple_g_value_new(G_TYPE_STRING), NULL);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
293 status_types = g_list_append(status_types, type);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
294
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
295 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
296 BONJOUR_STATUS_ID_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
297 NULL, TRUE, TRUE, FALSE,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
298 "message", _("Message"),
34810
8a3d21b27a22 Refactored bonjour, gg, irc and jabber to use GType and GValue instead of PurpleValue
Ankit Vani <a@nevitus.org>
parents: 34746
diff changeset
299 purple_g_value_new(G_TYPE_STRING), NULL);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
300 status_types = g_list_append(status_types, type);
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
301
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
302 type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE,
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
303 BONJOUR_STATUS_ID_OFFLINE,
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
304 NULL, TRUE, TRUE, FALSE);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
305 status_types = g_list_append(status_types, type);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
306
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
307 return status_types;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
308 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
309
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
310 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
311 bonjour_convo_closed(PurpleConnection *connection, const char *who)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
312 {
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
313 PurpleBuddy *buddy = purple_blist_find_buddy(purple_connection_get_account(connection), who);
17663
fd736a4d91a9 Close conversation connections when logging out of the Bonjour account. This also fixes leakage.
Daniel Atallah <datallah@pidgin.im>
parents: 17660
diff changeset
314 BonjourBuddy *bb;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
315
24935
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
316 if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL)
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
317 {
11966
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
318 /*
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
319 * This buddy is not in our buddy list, and therefore does not really
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
320 * exist, so we won't have any data about them.
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
321 */
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
322 return;
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
323 }
11966
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
324
17663
fd736a4d91a9 Close conversation connections when logging out of the Bonjour account. This also fixes leakage.
Daniel Atallah <datallah@pidgin.im>
parents: 17660
diff changeset
325 bonjour_jabber_close_conversation(bb->conversation);
fd736a4d91a9 Close conversation connections when logging out of the Bonjour account. This also fixes leakage.
Daniel Atallah <datallah@pidgin.im>
parents: 17660
diff changeset
326 bb->conversation = NULL;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
327 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
328
19204
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
329 static
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
330 void bonjour_set_buddy_icon(PurpleConnection *conn, PurpleStoredImage *img)
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
331 {
32260
5b0ecccb3bbb Convert bonjour prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
332 BonjourData *bd = purple_connection_get_protocol_data(conn);
19204
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
333 bonjour_dns_sd_update_buddy_icon(bd->dns_sd_data);
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
334 }
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
335
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
336
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
337 static char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
338 bonjour_status_text(PurpleBuddy *buddy)
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
339 {
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
340 const PurplePresence *presence;
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
341 const PurpleStatus *status;
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
342 const char *message;
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
343 gchar *ret = NULL;
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
344
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
345 presence = purple_buddy_get_presence(buddy);
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
346 status = purple_presence_get_active_status(presence);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
347
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
348 message = purple_status_get_attr_string(status, "message");
12339
9333237efc4f [gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents: 12216
diff changeset
349
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
350 if (message != NULL) {
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
351 ret = g_markup_escape_text(message, -1);
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
352 purple_util_chrreplace(ret, '\n', ' ');
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
353 }
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
354
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
355 return ret;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
356 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
357
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
358 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
359 bonjour_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboolean full)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
360 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
361 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
362 PurpleStatus *status;
24935
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
363 BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
364 const char *status_description;
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
365 const char *message;
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
366
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
367 presence = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
368 status = purple_presence_get_active_status(presence);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
369 message = purple_status_get_attr_string(status, "message");
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
370
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
371 if (purple_presence_is_available(presence))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
372 status_description = purple_status_get_name(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
373 else if (purple_presence_is_idle(presence))
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
374 status_description = _("Idle");
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
375 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
376 status_description = purple_status_get_name(status);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
377
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
378 purple_notify_user_info_add_pair_plaintext(user_info, _("Status"), status_description);
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
379 if (message != NULL) {
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
380 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
381 or if we should be using add_pair_plaintext */
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
382 purple_notify_user_info_add_pair_html(user_info, _("Message"), message);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
383 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
384
21720
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
385 if (bb == NULL) {
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
386 purple_debug_error("bonjour", "Got tooltip request for a buddy without protocol data.\n");
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
387 return;
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
388 }
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
389
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
390 /* Only show first/last name if there is a nickname set (to avoid duplication) */
25129
476e928f6127 Fix Bonjour to better deal with buddy values set to the empty string.
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
391 if (bb->nick != NULL && *bb->nick != '\0') {
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
392 if (bb->first != NULL && *bb->first != '\0') {
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
393 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
394 or if we should be using add_pair_plaintext */
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
395 purple_notify_user_info_add_pair_html(user_info, _("First name"), bb->first);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
396 }
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
397 if (bb->last != NULL && *bb->last != '\0') {
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
398 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
399 or if we should be using add_pair_plaintext */
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
400 purple_notify_user_info_add_pair_html(user_info, _("Last name"), bb->last);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
401 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
402 }
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
403
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
404 if (bb->email != NULL && *bb->email != '\0') {
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
405 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
406 or if we should be using add_pair_plaintext */
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
407 purple_notify_user_info_add_pair_html(user_info, _("Email"), bb->email);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
408 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
409
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
410 if (bb->AIM != NULL && *bb->AIM != '\0') {
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
411 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
412 or if we should be using add_pair_plaintext */
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
413 purple_notify_user_info_add_pair_html(user_info, _("AIM Account"), bb->AIM);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
414 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
415
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
416 if (bb->jid != NULL && *bb->jid != '\0') {
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
417 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
418 or if we should be using add_pair_plaintext */
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
419 purple_notify_user_info_add_pair_html(user_info, _("XMPP Account"), bb->jid);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
420 }
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
421 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
422
30825
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
423 static void
34697
fde4eb63fab0 Refactored protocols with initial GObject blist API
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
424 bonjour_do_group_change(PurpleBuddy *buddy, const char *new_group)
fde4eb63fab0 Refactored protocols with initial GObject blist API
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
425 {
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
426 if (buddy == NULL)
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
427 return;
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
428
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
429 /* If we're moving them out of the bonjour group, make them persistent */
29190
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
430 if (purple_strequal(new_group, BONJOUR_GROUP_NAME))
34865
764a33b41ac7 Renamed blist node's dont_save to transient.
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
431 purple_blist_node_set_transient(PURPLE_BLIST_NODE(buddy), TRUE);
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
432 else
34865
764a33b41ac7 Renamed blist node's dont_save to transient.
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
433 purple_blist_node_set_transient(PURPLE_BLIST_NODE(buddy),
764a33b41ac7 Renamed blist node's dont_save to transient.
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
434 !purple_blist_node_is_transient(PURPLE_BLIST_NODE(buddy)));
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
435
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
436 }
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
437
29190
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
438 static void
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
439 bonjour_group_buddy(PurpleConnection *connection, const char *who, const char *old_group, const char *new_group)
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
440 {
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
441 PurpleBuddy *buddy = purple_blist_find_buddy(purple_connection_get_account(connection), who);
29190
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
442
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
443 bonjour_do_group_change(buddy, new_group);
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
444
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
445 }
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
446
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
447 static void
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
448 bonjour_rename_group(PurpleConnection *connection, const char *old_name, PurpleGroup *group, GList *moved_buddies)
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
449 {
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
450 GList *cur;
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
451 const char *new_group;
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
452 PurpleBuddy *buddy;
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
453
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
454 new_group = purple_group_get_name(group);
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
455
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
456 for (cur = moved_buddies; cur; cur = cur->next) {
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
457 buddy = cur->data;
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
458 bonjour_do_group_change(buddy, new_group);
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
459 }
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
460
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
461 }
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
462
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
463 static gboolean
23259
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
464 bonjour_can_receive_file(PurpleConnection *connection, const char *who)
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
465 {
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
466 PurpleBuddy *buddy = purple_blist_find_buddy(purple_connection_get_account(connection), who);
23259
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
467
24935
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
468 return (buddy != NULL && purple_buddy_get_protocol_data(buddy) != NULL);
23259
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
469 }
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
470
34321
f60fcab02bd4 Reconsidered characters count callback for prpl API: make it per-conversation and distinguish infinite from undefined
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34312
diff changeset
471 static gssize
f60fcab02bd4 Reconsidered characters count callback for prpl API: make it per-conversation and distinguish infinite from undefined
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34312
diff changeset
472 bonjour_get_max_message_size(PurpleConversation *conv)
34312
4461d5c1e61c Extend prpl with max message length callback
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33955
diff changeset
473 {
34321
f60fcab02bd4 Reconsidered characters count callback for prpl API: make it per-conversation and distinguish infinite from undefined
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34312
diff changeset
474 return -1; /* 5MB successfully tested. */
34312
4461d5c1e61c Extend prpl with max message length callback
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33955
diff changeset
475 }
4461d5c1e61c Extend prpl with max message length callback
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33955
diff changeset
476
23259
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
477 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
478 plugin_unload(PurplePlugin *plugin)
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
479 {
17660
23c712d0a795 Cleanup, fix a leak and prevent the inbound xml from being parsed twice for every message.
Daniel Atallah <datallah@pidgin.im>
parents: 17632
diff changeset
480 /* These shouldn't happen here because they are allocated in _init() */
23c712d0a795 Cleanup, fix a leak and prevent the inbound xml from being parsed twice for every message.
Daniel Atallah <datallah@pidgin.im>
parents: 17632
diff changeset
481
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
482 g_free(default_firstname);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
483 g_free(default_lastname);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
484
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
485 return TRUE;
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
486 }
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
487
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
488 static PurplePlugin *my_protocol = NULL;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
489
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
490 static PurplePluginProtocolInfo prpl_info =
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
491 {
32316
21dab55b4699 Move struct_size to the beginning of the struct. Even if we don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32315
diff changeset
492 sizeof(PurplePluginProtocolInfo), /* struct_size */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
493 OPT_PROTO_NO_PASSWORD,
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
494 NULL, /* user_splits */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
495 NULL, /* protocol_options */
19204
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
496 {"png,gif,jpeg", 0, 0, 96, 96, 65535, PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
497 bonjour_list_icon, /* list_icon */
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
498 NULL, /* list_emblem */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
499 bonjour_status_text, /* status_text */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
500 bonjour_tooltip_text, /* tooltip_text */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
501 bonjour_status_types, /* status_types */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
502 NULL, /* blist_node_menu */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
503 NULL, /* chat_info */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
504 NULL, /* chat_info_defaults */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
505 bonjour_login, /* login */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
506 bonjour_close, /* close */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
507 bonjour_send_im, /* send_im */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
508 NULL, /* set_info */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
509 NULL, /* send_typing */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
510 NULL, /* get_info */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
511 bonjour_set_status, /* set_status */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
512 NULL, /* set_idle */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
513 NULL, /* change_passwd */
21720
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
514 bonjour_fake_add_buddy, /* add_buddy */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
515 NULL, /* add_buddies */
19748
ae5eab65f8de Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Daniel Atallah <datallah@pidgin.im>
parents: 19219
diff changeset
516 bonjour_remove_buddy, /* remove_buddy */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
517 NULL, /* remove_buddies */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
518 NULL, /* add_permit */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
519 NULL, /* add_deny */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
520 NULL, /* rem_permit */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
521 NULL, /* rem_deny */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
522 NULL, /* set_permit_deny */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
523 NULL, /* join_chat */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
524 NULL, /* reject_chat */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
525 NULL, /* get_chat_name */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
526 NULL, /* chat_invite */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
527 NULL, /* chat_leave */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
528 NULL, /* chat_whisper */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
529 NULL, /* chat_send */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
530 NULL, /* keepalive */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
531 NULL, /* register_user */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
532 NULL, /* get_cb_info */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
533 NULL, /* alias_buddy */
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
534 bonjour_group_buddy, /* group_buddy */
29190
687f7ba1905b Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052
Daniel Atallah <datallah@pidgin.im>
parents: 27624
diff changeset
535 bonjour_rename_group, /* rename_group */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
536 NULL, /* buddy_free */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
537 bonjour_convo_closed, /* convo_closed */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
538 NULL, /* normalize */
19204
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
539 bonjour_set_buddy_icon, /* set_buddy_icon */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
540 NULL, /* remove_group */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
541 NULL, /* get_cb_real_name */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
542 NULL, /* set_chat_topic */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
543 NULL, /* find_blist_chat */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
544 NULL, /* roomlist_get_list */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
545 NULL, /* roomlist_cancel */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
546 NULL, /* roomlist_expand_category */
23259
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
547 bonjour_can_receive_file, /* can_receive_file */
21524
472e58992083 Patch from some Intel folks to implement file transfer in Bonjour using XEP-0096 and 0065. This hopefully will work with Gaijm (haven't yet tested) and, of course, between libpurple instances; it will not work with Adium or iChat.
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
548 bonjour_send_file, /* send_file */
472e58992083 Patch from some Intel folks to implement file transfer in Bonjour using XEP-0096 and 0065. This hopefully will work with Gaijm (haven't yet tested) and, of course, between libpurple instances; it will not work with Adium or iChat.
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
549 bonjour_new_xfer, /* new_xfer */
12650
ca70a14f4994 [gaim-migrate @ 14988]
Mark Doliner <markdoliner@pidgin.im>
parents: 12607
diff changeset
550 NULL, /* offline_message */
12607
4622f0adedf4 [gaim-migrate @ 14943]
Mark Doliner <markdoliner@pidgin.im>
parents: 12595
diff changeset
551 NULL, /* whiteboard_prpl_ops */
15217
53af6e98dfff [gaim-migrate @ 17941]
Mark Doliner <markdoliner@pidgin.im>
parents: 14604
diff changeset
552 NULL, /* send_raw */
53af6e98dfff [gaim-migrate @ 17941]
Mark Doliner <markdoliner@pidgin.im>
parents: 14604
diff changeset
553 NULL, /* roomlist_room_serialize */
22071
4c47e360e467 Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22069
diff changeset
554 NULL, /* unregister_user */
4c47e360e467 Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22069
diff changeset
555 NULL, /* send_attention */
4c47e360e467 Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22069
diff changeset
556 NULL, /* get_attention_types */
23707
480f94157418 propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23325 22648
diff changeset
557 NULL, /* get_account_text_table */
480f94157418 propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23325 22648
diff changeset
558 NULL, /* initiate_media */
29757
f137c1386384 Add a NULL for PurplePluginProtocolInfo::get_moods to all the plugins I build
Paul Aurich <darkrain42@pidgin.im>
parents: 29190
diff changeset
559 NULL, /* get_media_caps */
30138
cca9685df785 Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <darkrain42@pidgin.im>
parents: 29761
diff changeset
560 NULL, /* get_moods */
cca9685df785 Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <darkrain42@pidgin.im>
parents: 29761
diff changeset
561 NULL, /* set_public_alias */
34312
4461d5c1e61c Extend prpl with max message length callback
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33955
diff changeset
562 NULL, /* get_public_alias */
4461d5c1e61c Extend prpl with max message length callback
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33955
diff changeset
563 bonjour_get_max_message_size /* get_max_message_size */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
564 };
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
565
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
566 static PurplePluginInfo info =
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
567 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
568 PURPLE_PLUGIN_MAGIC,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
569 PURPLE_MAJOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
570 PURPLE_MINOR_VERSION,
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
571 PURPLE_PLUGIN_PROTOCOL, /**< type */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
572 NULL, /**< ui_requirement */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
573 0, /**< flags */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
574 NULL, /**< dependencies */
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
575 PURPLE_PRIORITY_DEFAULT, /**< priority */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
576
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
577 "prpl-bonjour", /**< id */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
578 "Bonjour", /**< name */
20288
5ca925a094e2 applied changes from 03b709ec2a153e7e82719df0ba4635108bb1d3c6
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20221
diff changeset
579 DISPLAY_VERSION, /**< version */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
580 /** summary */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
581 N_("Bonjour Protocol Plugin"),
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
582 /** description */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
583 N_("Bonjour Protocol Plugin"),
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
584 NULL, /**< author */
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
585 PURPLE_WEBSITE, /**< homepage */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
586
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
587 NULL, /**< load */
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
588 plugin_unload, /**< unload */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
589 NULL, /**< destroy */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
590
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
591 NULL, /**< ui_info */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
592 &prpl_info, /**< extra_info */
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
593 NULL, /**< prefs_info */
16776
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 15996
diff changeset
594 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 15996
diff changeset
595
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 15996
diff changeset
596 /* padding */
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 15996
diff changeset
597 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 15996
diff changeset
598 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 15996
diff changeset
599 NULL,
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
600 NULL
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
601 };
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
602
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
603 #ifdef WIN32
30825
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
604 static gboolean
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
605 _set_default_name_cb(gpointer data) {
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
606 gchar *fullname = data;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
607 const char *splitpoint;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
608 GList *tmp = prpl_info.protocol_options;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
609 PurpleAccountOption *option;
13192
77a782e38011 [gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents: 13076
diff changeset
610
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
611 if (!fullname) {
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
612 purple_debug_info("bonjour", "Unable to look up First and Last name or Username from system; using defaults.\n");
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
613 return FALSE;
13076
84dfc467ddbd [gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents: 13063
diff changeset
614 }
84dfc467ddbd [gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents: 13063
diff changeset
615
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
616 g_free(default_firstname);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
617 g_free(default_lastname);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
618
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
619 /* Split the real name into a first and last name */
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
620 splitpoint = strchr(fullname, ' ');
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
621 if (splitpoint != NULL) {
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
622 default_firstname = g_strndup(fullname, splitpoint - fullname);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
623 default_lastname = g_strdup(&splitpoint[1]);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
624 } else {
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
625 default_firstname = g_strdup(fullname);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
626 default_lastname = g_strdup("");
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
627 }
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
628 g_free(fullname);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
629
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
630
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
631 for(; tmp != NULL; tmp = tmp->next) {
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
632 option = tmp->data;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
633 if (strcmp("first", purple_account_option_get_setting(option)) == 0)
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
634 purple_account_option_set_default_string(option, default_firstname);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
635 else if (strcmp("last", purple_account_option_get_setting(option)) == 0)
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
636 purple_account_option_set_default_string(option, default_lastname);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
637 }
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
638
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
639 return FALSE;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
640 }
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
641
30825
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
642 static gpointer
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
643 _win32_name_lookup_thread(gpointer data) {
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
644 gchar *fullname = NULL;
18844
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
645 wchar_t username[UNLEN + 1];
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
646 DWORD dwLenUsername = UNLEN + 1;
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
647
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
648 GetUserNameW((LPWSTR) &username, &dwLenUsername);
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
649
18844
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
650 if (username != NULL && *username != '\0') {
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
651 LPBYTE servername = NULL;
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
652 LPBYTE info = NULL;
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
653
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
654 NetGetDCName(NULL, NULL, &servername);
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
655
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
656 /* purple_debug_info("bonjour", "Looking up the full name from the %s.\n", (servername ? "domain controller" : "local machine")); */
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
657
18844
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
658 if (NetUserGetInfo((LPCWSTR) servername, username, 10, &info) == NERR_Success
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
659 && info != NULL && ((LPUSER_INFO_10) info)->usri10_full_name != NULL
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
660 && *(((LPUSER_INFO_10) info)->usri10_full_name) != '\0') {
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
661 fullname = g_utf16_to_utf8(
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
662 ((LPUSER_INFO_10) info)->usri10_full_name,
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
663 -1, NULL, NULL, NULL);
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
664 }
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
665 /* Fall back to the local machine if we didn't get the full name from the domain controller */
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
666 else if (servername != NULL) {
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
667 /* purple_debug_info("bonjour", "Looking up the full name from the local machine"); */
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
668
18844
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
669 if (info != NULL) NetApiBufferFree(info);
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
670 info = NULL;
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
671
18844
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
672 if (NetUserGetInfo(NULL, username, 10, &info) == NERR_Success
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
673 && info != NULL && ((LPUSER_INFO_10) info)->usri10_full_name != NULL
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
674 && *(((LPUSER_INFO_10) info)->usri10_full_name) != '\0') {
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
675 fullname = g_utf16_to_utf8(
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
676 ((LPUSER_INFO_10) info)->usri10_full_name,
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
677 -1, NULL, NULL, NULL);
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
678 }
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
679 }
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
680
18844
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
681 if (info != NULL) NetApiBufferFree(info);
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
682 if (servername != NULL) NetApiBufferFree(servername);
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
683
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
684 if (!fullname)
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
685 fullname = g_utf16_to_utf8(username, -1, NULL, NULL, NULL);
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
686 }
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
687
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20200
diff changeset
688 purple_timeout_add(0, _set_default_name_cb, fullname);
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
689
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
690 return NULL;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
691 }
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
692 #endif
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
693
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
694 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21944
diff changeset
695 initialize_default_account_values(void)
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
696 {
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
697 #ifndef _WIN32
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
698 struct passwd *info;
33883
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
699 #else
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
700 GThread *lookup_thread;
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
701 #endif
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
702 const char *fullname = NULL, *splitpoint, *tmp;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
703 gchar *conv = NULL;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
704
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
705 #ifndef _WIN32
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
706 /* Try to figure out the user's real name */
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
707 info = getpwuid(getuid());
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
708 if ((info != NULL) && (info->pw_gecos != NULL) && (info->pw_gecos[0] != '\0'))
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
709 fullname = info->pw_gecos;
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
710 else if ((info != NULL) && (info->pw_name != NULL) && (info->pw_name[0] != '\0'))
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
711 fullname = info->pw_name;
19842
4630c7f60cb9 We have got an empty fullname, set it to NULL so that we fall back to
Mark Doliner <markdoliner@pidgin.im>
parents: 19824
diff changeset
712 else if (((fullname = getlogin()) != NULL) && (fullname[0] == '\0'))
4630c7f60cb9 We have got an empty fullname, set it to NULL so that we fall back to
Mark Doliner <markdoliner@pidgin.im>
parents: 19824
diff changeset
713 fullname = NULL;
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
714 #else
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
715 /* The Win32 username lookup functions are synchronous so we do it in a thread */
33883
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
716 lookup_thread = g_thread_try_new("bonjour dns thread", _win32_name_lookup_thread, NULL, NULL);
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
717 if (lookup_thread)
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
718 g_thread_unref(lookup_thread);
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
719 else
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
720 purple_debug_fatal("bonjour", "failed to create lookup thread\n");
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
721 #endif
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
722
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
723 /* Make sure fullname is valid UTF-8. If not, try to convert it. */
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
724 if (fullname != NULL && !g_utf8_validate(fullname, -1, NULL)) {
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
725 fullname = conv = g_locale_to_utf8(fullname, -1, NULL, NULL, NULL);
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
726 if (conv == NULL || *conv == '\0')
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
727 fullname = NULL;
18844
257e1878df25 Bonjour only works on Windows2000 or newer, so we don't need to indirectly access the Net* functions. Avoid doing an unnecessary domain query to find the Domain Controller (which was causing a several second delay at startup). Also, try harder to avoid empty default names and falling back to "Purple Person".
Daniel Atallah <datallah@pidgin.im>
parents: 17663
diff changeset
728 }
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
729
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
730 if (fullname == NULL)
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
731 fullname = _("Purple Person");
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
732
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
733 /* Split the real name into a first and last name */
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
734 splitpoint = strchr(fullname, ' ');
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
735 if (splitpoint != NULL) {
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
736 default_firstname = g_strndup(fullname, splitpoint - fullname);
16823
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
737 tmp = &splitpoint[1];
19204
ccc7ec4ea4dc Some more minor mdns implementation abstraction tweaks and implementation of setting buddy icons for the win32 bonjour implementation.
Daniel Atallah <datallah@pidgin.im>
parents: 18844
diff changeset
738
16823
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
739 /* The last name may be followed by a comma and additional data.
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
740 * Only use the last name itself.
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
741 */
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
742 splitpoint = strchr(tmp, ',');
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
743 if (splitpoint != NULL)
17596
45f6190fe54a This is a patch from Chris Davies to make Bonjour work on Windows using the Apple Bonjour framework. It turns out that the actual DNS-SD library is (3 clause) BSD licensed, so we can use it.
Daniel Atallah <datallah@pidgin.im>
parents: 16961
diff changeset
744 default_lastname = g_strndup(tmp, splitpoint - tmp);
16823
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
745 else
c505ca263924 The last name from /etc/passwd may have additional comma-delimited data which we should ignore when determining the default Bonjour name. Fixes #477
Evan Schoenberg <evands@pidgin.im>
parents: 16799
diff changeset
746 default_lastname = g_strdup(tmp);
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
747 } else {
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
748 default_firstname = g_strdup(fullname);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
749 default_lastname = g_strdup("");
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
750 }
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
751
19824
f99f468cda22 Lookup the default First and Last name values for bonjour on win32 in a thread to avoid delays when the plugin is being loaded. Apparently for some people the delay is quite significant when they're part of a domain, but the domain server isn't accessible.
Daniel Atallah <datallah@pidgin.im>
parents: 19748
diff changeset
752 g_free(conv);
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
753 }
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
754
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
755 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
756 init_plugin(PurplePlugin *plugin)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
757 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
758 PurpleAccountOption *option;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
759
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
760 initialize_default_account_values();
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
761
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
762 /* Creating the options for the protocol */
25641
cf74c04c6f41 Better support running many Bonjour clients on the same machine by allowing a
Daniel Atallah <datallah@pidgin.im>
parents: 25129
diff changeset
763 option = purple_account_option_int_new(_("Local Port"), "port", BONJOUR_DEFAULT_PORT);
cf74c04c6f41 Better support running many Bonjour clients on the same machine by allowing a
Daniel Atallah <datallah@pidgin.im>
parents: 25129
diff changeset
764 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
cf74c04c6f41 Better support running many Bonjour clients on the same machine by allowing a
Daniel Atallah <datallah@pidgin.im>
parents: 25129
diff changeset
765
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
766 option = purple_account_option_string_new(_("First name"), "first", default_firstname);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
767 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
768
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
769 option = purple_account_option_string_new(_("Last name"), "last", default_lastname);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
770 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
771
23325
a374a26fe217 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@pidgin.im>
parents: 23313
diff changeset
772 option = purple_account_option_string_new(_("Email"), "email", "");
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
773 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
774
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
775 option = purple_account_option_string_new(_("AIM Account"), "AIM", "");
13968
45f6a17eca9b [gaim-migrate @ 16400]
Jonty Wareing
parents: 13546
diff changeset
776 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
45f6a17eca9b [gaim-migrate @ 16400]
Jonty Wareing
parents: 13546
diff changeset
777
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16823
diff changeset
778 option = purple_account_option_string_new(_("XMPP Account"), "jid", "");
13968
45f6a17eca9b [gaim-migrate @ 16400]
Jonty Wareing
parents: 13546
diff changeset
779 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
45f6a17eca9b [gaim-migrate @ 16400]
Jonty Wareing
parents: 13546
diff changeset
780
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
781 my_protocol = plugin;
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
782 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
783
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
784 PURPLE_INIT_PLUGIN(bonjour, init_plugin, info);

mercurial