libpurple/protocols/bonjour/bonjour.c

Thu, 03 May 2018 18:17:21 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Thu, 03 May 2018 18:17:21 -0500
changeset 39005
6a56e1366809
parent 38841
518362268798
child 39435
b30e04a71ecf
permissions
-rw-r--r--

xfer: Rename PurpleProtocolXferInterface.send() to send_file()

With the addition of PurpleProtocolXferInterface, building in Windows
fails due to the redefinition of send() as wpurple_send(). Since a
lot of the prpls already call it this their implementations, this
patch renames it to send_file(). This fixes building on Windows
again.

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"
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
38 #include "plugins.h"
13061
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
39 #include "util.h"
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40 #include "version.h"
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
41
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
42 #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
43 #include "mdns_common.h"
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
44 #include "jabber.h"
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
45 #include "buddy.h"
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
46 #include "bonjour_ft.h"
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
47
36572
fdb3db620b38 Refactored bonjour to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
48 static PurpleProtocol *my_protocol = NULL;
fdb3db620b38 Refactored bonjour to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
49
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
50 static char *default_firstname;
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
51 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
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 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
54 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
55 {
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
56 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
57 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
58 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
59 }
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
60
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
61 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
62 bonjour_removeallfromlocal(PurpleConnection *conn, PurpleGroup *bonjour_group)
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
63 {
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
64 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
65 PurpleBlistNode *cnode, *cnodenext, *bnode, *bnodenext;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
66 PurpleBuddy *buddy;
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
67
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
68 if (bonjour_group == NULL)
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
69 return;
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
70
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
71 /* 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
72 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
73 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
74 if (!PURPLE_IS_CONTACT(cnode))
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
75 continue;
24557
093de9cb395c Fix Bonjour to work with the hidden structs, except for proto_data.
Richard Laager <rlaager@pidgin.im>
parents: 23850
diff changeset
76 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
77 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
78 if (!PURPLE_IS_BUDDY(bnode))
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
79 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
80 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
81 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
82 continue;
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
83 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
84 purple_blist_remove_buddy(buddy);
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 }
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
87
11691
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
88 }
d46ace30ec7e [gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents: 11539
diff changeset
89
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
90 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
91 bonjour_login(PurpleAccount *account)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
92 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
93 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
94 BonjourData *bd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
95 PurpleStatus *status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
96 PurplePresence *presence;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
97
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
98 #ifdef _WIN32
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
99 if (!dns_sd_available()) {
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
100 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
101 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
102 _("Unable to find Apple's \"Bonjour for Windows\" toolkit, see "
37877
a21b7b6aae4f Replace instances of d.pidgin.im with developer.pidgin.im. Fixes #17036
Gary Kramlich <grim@reaperworld.com>
parents: 31595
diff changeset
103 "https://developer.pidgin.im/BonjourWindows for more information."));
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
104 return;
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
105 }
27624
9dda0ba504a9 Change the wording in a connection error message. I'm trying to make
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
106 #endif /* _WIN32 */
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
107
36055
33978dc8ef6f Remove redundant OPT_PROTO_IM_IMAGE (use \!PURPLE_CONNECTION_FLAG_NO_IMAGES instead)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35812
diff changeset
108 purple_connection_set_flags(gc, PURPLE_CONNECTION_FLAG_HTML |
33978dc8ef6f Remove redundant OPT_PROTO_IM_IMAGE (use \!PURPLE_CONNECTION_FLAG_NO_IMAGES instead)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35812
diff changeset
109 PURPLE_CONNECTION_FLAG_NO_IMAGES);
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
110 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
111 purple_connection_set_protocol_data(gc, bd);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
112
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
113 /* 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
114 bd->jabber_data = g_new0(BonjourJabber, 1);
29761
0f6862f2782f Implementation of IPv6 support for Bonjour
Daniel Atallah <datallah@pidgin.im>
parents: 29757
diff changeset
115 bd->jabber_data->socket = -1;
0f6862f2782f Implementation of IPv6 support for Bonjour
Daniel Atallah <datallah@pidgin.im>
parents: 29757
diff changeset
116 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
117 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
118 bd->jabber_data->account = account;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
119
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
120 if (bonjour_jabber_start(bd->jabber_data) == -1) {
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
121 /* 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
122 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
123 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
124 _("Unable to listen for incoming IM connections"));
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
125 return;
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
126 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
127
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
128 /* Connect to the mDNS daemon looking for buddies in the LAN */
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
129 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
130 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
131 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
132 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
133 /* 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
134 bd->dns_sd_data->vc = g_strdup("!");
11834
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
135
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
136 status = purple_account_get_active_status(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
137 presence = purple_account_get_presence(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
138 if (purple_presence_is_available(presence))
11834
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
139 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
140 else if (purple_presence_is_idle(presence))
11834
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
141 bd->dns_sd_data->status = g_strdup("away");
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
142 else
9c0104f0b8c3 [gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
143 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
144 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
145
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
146 bd->dns_sd_data->account = account;
11927
f9ede13499d0 [gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents: 11841
diff changeset
147 if (!bonjour_dns_sd_start(bd->dns_sd_data))
f9ede13499d0 [gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents: 11841
diff changeset
148 {
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
149 purple_connection_error (gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
150 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
151 _("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
152 return;
f9ede13499d0 [gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents: 11841
diff changeset
153 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
154
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
155 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
156
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
157 /* 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
158 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
159 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
160
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
161 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
162 bonjour_close(PurpleConnection *connection)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
163 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
164 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
165 BonjourData *bd = purple_connection_get_protocol_data(connection);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
166
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
167 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
168
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
169 /* 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
170 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
171
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
172 /* Stop looking for buddies in the LAN */
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
173 if (bd != NULL && bd->dns_sd_data != NULL)
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
174 {
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
175 bonjour_dns_sd_stop(bd->dns_sd_data);
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
176 bonjour_dns_sd_free(bd->dns_sd_data);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
177 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
178
20200
21898c919046 applied changes from fbb7ffaf4075cf690cc3ff9d171e56320e9af8da
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
179 if (bd != NULL && bd->jabber_data != NULL)
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
180 {
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
181 /* Stop waiting for conversations */
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
182 bonjour_jabber_stop(bd->jabber_data);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
183 g_free(bd->jabber_data);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
184 }
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
185
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
186 /* 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
187 * (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
188 */
13063
0dcbcfe1c9d7 [gaim-migrate @ 15425]
David Schmitt
parents: 13061
diff changeset
189 if (bonjour_group != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
190 purple_blist_remove_group(bonjour_group);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
191
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
192 /* 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
193 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
194 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
195 }
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
196
30875
37e57d4ba633 Fix crash when attempting to log into a bonjour account and init failed
Daniel Atallah <datallah@pidgin.im>
parents: 30825
diff changeset
197 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
198 g_free(bd->jid);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20200
diff changeset
199 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
200 purple_connection_set_protocol_data(connection, NULL);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
201 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
202
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
203 static const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
204 bonjour_list_icon(PurpleAccount *account, PurpleBuddy *buddy)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
205 {
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
206 return BONJOUR_ICON_NAME;
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
207 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
208
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
209 static int
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
210 bonjour_send_im(PurpleConnection *connection, PurpleMessage *msg)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
211 {
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
212 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
213
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
214 if (purple_message_is_empty(msg) || !purple_message_get_recipient(msg))
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
215 return 0;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
216
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
217 return bonjour_jabber_send_message(bd->jabber_data,
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
218 purple_message_get_recipient(msg),
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
219 purple_message_get_contents(msg));
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
220 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
221
12443
ad94864144f8 [gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12339
diff changeset
222 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
223 bonjour_set_status(PurpleAccount *account, PurpleStatus *status)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
224 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
225 PurpleConnection *gc;
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
226 BonjourData *bd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
227 PurplePresence *presence;
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
228 const char *message, *bonjour_status;
13061
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
229 gchar *stripped;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
230
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
231 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
232 bd = purple_connection_get_protocol_data(gc);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
233 presence = purple_account_get_presence(account);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
234
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
235 message = purple_status_get_attr_string(status, "message");
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
236 if (message == NULL)
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
237 message = "";
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
238 stripped = purple_markup_strip_html(message);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
239
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
240 /*
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
241 * The three possible status for Bonjour are
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
242 * -available ("avail")
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
243 * -idle ("away")
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
244 * -away ("dnd")
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
245 * Each of them can have an optional message.
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
246 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
247 if (purple_presence_is_available(presence))
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
248 bonjour_status = "avail";
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
249 else if (purple_presence_is_idle(presence))
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
250 bonjour_status = "away";
11835
da95d476b481 [gaim-migrate @ 14126]
Mark Doliner <markdoliner@pidgin.im>
parents: 11834
diff changeset
251 else
11841
85773b4974fe [gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11839
diff changeset
252 bonjour_status = "dnd";
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
253
13061
ab3ef8e402e4 [gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12970
diff changeset
254 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
255 g_free(stripped);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
256 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
257
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
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 * 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
260 * 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
261 * 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
262 * 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
263 */
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 static void
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32260
diff changeset
265 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
266 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
267 "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
268 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
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 /* 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
271
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
272 /* 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
273 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
274 }
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
275
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
276
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 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
278 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
279 if (bb) {
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
280 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
281 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
282 }
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
283 }
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
284
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
285 static GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
286 bonjour_status_types(PurpleAccount *account)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
287 {
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
288 GList *status_types = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
289 PurpleStatusType *type;
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
290
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
291 g_return_val_if_fail(account != NULL, NULL);
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
292
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
293 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
294 BONJOUR_STATUS_ID_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
295 NULL, TRUE, TRUE, FALSE,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
296 "message", _("Message"),
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34911
diff changeset
297 purple_value_new(G_TYPE_STRING), NULL);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
298 status_types = g_list_append(status_types, type);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
299
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
300 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
301 BONJOUR_STATUS_ID_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
302 NULL, TRUE, TRUE, FALSE,
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
303 "message", _("Message"),
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34911
diff changeset
304 purple_value_new(G_TYPE_STRING), NULL);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
305 status_types = g_list_append(status_types, type);
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
306
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
307 type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE,
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
308 BONJOUR_STATUS_ID_OFFLINE,
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
309 NULL, TRUE, TRUE, FALSE);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
310 status_types = g_list_append(status_types, type);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12650
diff changeset
311
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
312 return status_types;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
313 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
314
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
315 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
316 bonjour_convo_closed(PurpleConnection *connection, const char *who)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
317 {
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
318 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
319 BonjourBuddy *bb;
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
320
24935
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
321 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
322 {
11966
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
323 /*
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
324 * 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
325 * exist, so we won't have any data about them.
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
326 */
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
327 return;
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
328 }
11966
ad12fc2943ca [gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents: 11927
diff changeset
329
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
330 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
331 bb->conversation = NULL;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
332 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
333
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35005
diff changeset
334 static void
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35005
diff changeset
335 bonjour_set_buddy_icon(PurpleConnection *conn, PurpleImage *img)
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
336 {
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
337 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
338 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
339 }
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
340
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
341
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
342 static char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
343 bonjour_status_text(PurpleBuddy *buddy)
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
344 {
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
345 const PurplePresence *presence;
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
346 const PurpleStatus *status;
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
347 const char *message;
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
348 gchar *ret = NULL;
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
349
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
350 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
351 status = purple_presence_get_active_status(presence);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
352
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
353 message = purple_status_get_attr_string(status, "message");
12339
9333237efc4f [gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents: 12216
diff changeset
354
19218
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
355 if (message != NULL) {
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
356 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
357 purple_util_chrreplace(ret, '\n', ' ');
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
358 }
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
359
cb1f18ee620b Show bonjour status messages in the buddy list.
Daniel Atallah <datallah@pidgin.im>
parents: 19204
diff changeset
360 return ret;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
361 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
362
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
363 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
364 bonjour_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboolean full)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
365 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
366 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
367 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
368 BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
369 const char *status_description;
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
370 const char *message;
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
371
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
372 presence = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
373 status = purple_presence_get_active_status(presence);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
374 message = purple_status_get_attr_string(status, "message");
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
375
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
376 if (purple_presence_is_available(presence))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
377 status_description = purple_status_get_name(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
378 else if (purple_presence_is_idle(presence))
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
379 status_description = _("Idle");
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
380 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
381 status_description = purple_status_get_name(status);
11496
0f61069a4a3f [gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents: 11477
diff changeset
382
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 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
384 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
385 /* 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
386 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
387 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
388 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
389
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
390 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
391 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
392 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
393 }
235394d5c7f4 Pull a bunch of bugfix only changes to im.pidgin.pidgin.2.3.1,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21614
diff changeset
394
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
395 /* 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
396 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
397 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
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, _("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
401 }
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
402 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
403 /* 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
404 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
405 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
406 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
407 }
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
408
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
409 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
410 /* 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
411 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
412 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
413 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
414
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
415 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
416 /* 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
417 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
418 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
419 }
19219
e1ef7cdd283a Add data to the bonjour tooltip.
Daniel Atallah <datallah@pidgin.im>
parents: 19218
diff changeset
420
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
421 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
422 /* 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
423 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
424 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
425 }
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
426 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
427
30825
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
428 static void
34697
fde4eb63fab0 Refactored protocols with initial GObject blist API
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
429 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
430 {
23140
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
431 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
432 return;
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
433
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
434 /* 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
435 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
436 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
437 else
34865
764a33b41ac7 Renamed blist node's dont_save to transient.
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
438 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
439 !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
440
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
441 }
0e14208595bc Bonjour buddies will be saved persistently if they're moved out of the
Daniel Atallah <datallah@pidgin.im>
parents: 23072
diff changeset
442
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
443 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
444 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
445 {
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
446 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
447
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_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
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 }
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
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 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
453 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
454 {
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 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
456 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
457 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
458
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 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
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 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
462 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
463 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
464 }
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
465
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
466 }
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
467
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
468 static gboolean
38841
518362268798 make sure all the PurpleProtocolXfer parameters are named prplxfer
Gary Kramlich <grim@reaperworld.com>
parents: 38835
diff changeset
469 bonjour_can_receive_file(PurpleProtocolXfer *prplxfer, PurpleConnection *connection, const char *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
470 {
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
471 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
472
24935
b9a3603e84c0 Use purple_buddy_get_protocol_data() and purple_buddy_set_protocol_data()
Richard Laager <rlaager@pidgin.im>
parents: 24557
diff changeset
473 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
474 }
6186473f3370 Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
Daniel Atallah <datallah@pidgin.im>
parents: 23233
diff changeset
475
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
476 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
477 bonjour_get_max_message_size(PurpleConversation *conv)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
478 {
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
479 return -1; /* 5MB successfully tested. */
34312
4461d5c1e61c Extend prpl with max message length callback
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33955
diff changeset
480 }
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
481
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
482 #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
483 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
484 _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
485 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
486 const char *splitpoint;
37171
7b7874ff088d Fix win32 bonjour build
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 37163
diff changeset
487 GList *tmp = my_protocol->account_options;
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
488 PurpleAccountOption *option;
13192
77a782e38011 [gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents: 13076
diff changeset
489
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
490 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
491 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
492 return FALSE;
13076
84dfc467ddbd [gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents: 13063
diff changeset
493 }
84dfc467ddbd [gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents: 13063
diff changeset
494
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
495 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
496 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
497
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
498 /* 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
499 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
500 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
501 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
502 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
503 } 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
504 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
505 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
506 }
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
507 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
508
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
509
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
510 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
511 option = tmp->data;
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 37877
diff changeset
512 if (purple_strequal("first", purple_account_option_get_setting(option)))
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
513 purple_account_option_set_default_string(option, default_firstname);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 37877
diff changeset
514 else if (purple_strequal("last", purple_account_option_get_setting(option)))
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
515 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
516 }
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
517
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
518 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
519 }
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
520
30825
87a79bbdc985 The hostname used for a bonjour account should always be the current machine
Daniel Atallah <datallah@pidgin.im>
parents: 30706
diff changeset
521 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
522 _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
523 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
524 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
525 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
526
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
527 GetUserNameW((LPWSTR) &username, &dwLenUsername);
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
528
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
529 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
530 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
531 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
532
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
533 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
534
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
535 /* 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
536
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
537 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
538 && 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
539 && *(((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
540 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
541 ((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
542 -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
543 }
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
544 /* 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
545 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
546 /* 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
547
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
548 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
549 info = NULL;
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
550
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
551 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
552 && 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
553 && *(((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
554 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
555 ((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
556 -1, NULL, NULL, NULL);
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
557 }
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
558 }
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
559
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
560 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
561 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
562
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
563 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
564 fullname = g_utf16_to_utf8(username, -1, NULL, NULL, NULL);
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
565 }
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
566
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 38358
diff changeset
567 g_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
568
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
569 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
570 }
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
571 #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
572
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
573 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
574 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
575 {
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
576 #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
577 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
578 #else
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
579 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
580 #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
581 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
582 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
583
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
584 #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
585 /* 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
586 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
587 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
588 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
589 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
590 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
591 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
592 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
593 #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
594 /* 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
595 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
596 if (lookup_thread)
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
597 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
598 else
8a0d96bd9cf4 Replace deprecated g_thread_create with g_thread_try_new
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 32678
diff changeset
599 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
600 #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
601
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
602 /* 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
603 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
604 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
605 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
606 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
607 }
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
608
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 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
610 fullname = _("Purple Person");
12003
6f6cbf74cb27 [gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents: 11984
diff changeset
611
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
612 /* Split the real name into a first and last name */
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
613 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
614 if (splitpoint != NULL) {
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
615 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
616 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
617
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
618 /* 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
619 * 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
620 */
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
621 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
622 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
623 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
624 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
625 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
626 } else {
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
627 default_firstname = g_strdup(fullname);
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
628 default_lastname = g_strdup("");
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
629 }
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
630
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
631 g_free(conv);
11984
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
632 }
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
633
0ac04d1651b6 [gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents: 11966
diff changeset
634 static void
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
635 bonjour_protocol_init(PurpleProtocol *protocol)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
636 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
637 PurpleAccountOption *option;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
638
37004
c8dce7bef0e6 Change protocol IDs to prpl-*
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
639 protocol->id = "prpl-bonjour";
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
640 protocol->name = "Bonjour";
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
641 protocol->options = OPT_PROTO_NO_PASSWORD;
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
642 protocol->icon_spec = purple_buddy_icon_spec_new("png,gif,jpeg",
36609
637155f87448 Refactored the protocols to use purple_buddy_icon_spec_new()
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
643 0, 0, 96, 96, 65535,
637155f87448 Refactored the protocols to use purple_buddy_icon_spec_new()
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
644 PURPLE_ICON_SCALE_DISPLAY);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
645
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11718
diff changeset
646 /* 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
647 option = purple_account_option_int_new(_("Local Port"), "port", BONJOUR_DEFAULT_PORT);
37038
8832d14d7d0c Rename 'protocol_options' field of PurpleProtocol to more appropriate 'account_options'
Ankit Vani <a@nevitus.org>
parents: 37004
diff changeset
648 protocol->account_options = g_list_append(protocol->account_options, option);
25641
cf74c04c6f41 Better support running many Bonjour clients on the same machine by allowing a
Daniel Atallah <datallah@pidgin.im>
parents: 25129
diff changeset
649
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
650 option = purple_account_option_string_new(_("First name"), "first", default_firstname);
37038
8832d14d7d0c Rename 'protocol_options' field of PurpleProtocol to more appropriate 'account_options'
Ankit Vani <a@nevitus.org>
parents: 37004
diff changeset
651 protocol->account_options = g_list_append(protocol->account_options, option);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
652
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
653 option = purple_account_option_string_new(_("Last name"), "last", default_lastname);
37038
8832d14d7d0c Rename 'protocol_options' field of PurpleProtocol to more appropriate 'account_options'
Ankit Vani <a@nevitus.org>
parents: 37004
diff changeset
654 protocol->account_options = g_list_append(protocol->account_options, option);
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
655
23325
a374a26fe217 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@pidgin.im>
parents: 23313
diff changeset
656 option = purple_account_option_string_new(_("Email"), "email", "");
37038
8832d14d7d0c Rename 'protocol_options' field of PurpleProtocol to more appropriate 'account_options'
Ankit Vani <a@nevitus.org>
parents: 37004
diff changeset
657 protocol->account_options = g_list_append(protocol->account_options, option);
11539
fbabe3f89777 [gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents: 11519
diff changeset
658
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15872
diff changeset
659 option = purple_account_option_string_new(_("AIM Account"), "AIM", "");
37038
8832d14d7d0c Rename 'protocol_options' field of PurpleProtocol to more appropriate 'account_options'
Ankit Vani <a@nevitus.org>
parents: 37004
diff changeset
660 protocol->account_options = g_list_append(protocol->account_options, option);
13968
45f6a17eca9b [gaim-migrate @ 16400]
Jonty Wareing
parents: 13546
diff changeset
661
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16823
diff changeset
662 option = purple_account_option_string_new(_("XMPP Account"), "jid", "");
37038
8832d14d7d0c Rename 'protocol_options' field of PurpleProtocol to more appropriate 'account_options'
Ankit Vani <a@nevitus.org>
parents: 37004
diff changeset
663 protocol->account_options = g_list_append(protocol->account_options, option);
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
664 }
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
665
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
666 static void
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
667 bonjour_protocol_class_init(PurpleProtocolClass *klass)
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
668 {
36731
38de3f22e864 Renamed close_connection back to close
Ankit Vani <a@nevitus.org>
parents: 36730
diff changeset
669 klass->login = bonjour_login;
38de3f22e864 Renamed close_connection back to close
Ankit Vani <a@nevitus.org>
parents: 36730
diff changeset
670 klass->close = bonjour_close;
38de3f22e864 Renamed close_connection back to close
Ankit Vani <a@nevitus.org>
parents: 36730
diff changeset
671 klass->status_types = bonjour_status_types;
38de3f22e864 Renamed close_connection back to close
Ankit Vani <a@nevitus.org>
parents: 36730
diff changeset
672 klass->list_icon = bonjour_list_icon;
36572
fdb3db620b38 Refactored bonjour to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
673 }
13968
45f6a17eca9b [gaim-migrate @ 16400]
Jonty Wareing
parents: 13546
diff changeset
674
36572
fdb3db620b38 Refactored bonjour to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
675 static void
36729
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
676 bonjour_protocol_client_iface_init(PurpleProtocolClientIface *client_iface)
36572
fdb3db620b38 Refactored bonjour to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
677 {
36729
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
678 client_iface->status_text = bonjour_status_text;
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
679 client_iface->tooltip_text = bonjour_tooltip_text;
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
680 client_iface->convo_closed = bonjour_convo_closed;
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
681 client_iface->get_max_message_size = bonjour_get_max_message_size;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
682 }
13968
45f6a17eca9b [gaim-migrate @ 16400]
Jonty Wareing
parents: 13546
diff changeset
683
36730
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
684 static void
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
685 bonjour_protocol_server_iface_init(PurpleProtocolServerIface *server_iface)
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
686 {
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
687 server_iface->add_buddy = bonjour_fake_add_buddy;
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
688 server_iface->remove_buddy = bonjour_remove_buddy;
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
689 server_iface->group_buddy = bonjour_group_buddy;
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
690 server_iface->rename_group = bonjour_rename_group;
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
691 server_iface->set_buddy_icon = bonjour_set_buddy_icon;
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
692 server_iface->set_status = bonjour_set_status;
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
693 }
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
694
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
695 static void
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
696 bonjour_protocol_im_iface_init(PurpleProtocolIMIface *im_iface)
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
697 {
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
698 im_iface->send = bonjour_send_im;
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
699 }
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
700
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
701 static void
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
702 bonjour_protocol_xfer_iface_init(PurpleProtocolXferInterface *xfer_iface)
36730
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
703 {
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
704 xfer_iface->can_receive = bonjour_can_receive_file;
39005
6a56e1366809 xfer: Rename PurpleProtocolXferInterface.send() to send_file()
Mike Ruprecht <cmaiku@gmail.com>
parents: 38841
diff changeset
705 xfer_iface->send_file = bonjour_send_file;
36730
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
706 xfer_iface->new_xfer = bonjour_new_xfer;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
707 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
708
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36708
diff changeset
709 PURPLE_DEFINE_TYPE_EXTENDED(
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36708
diff changeset
710 BonjourProtocol, bonjour_protocol, PURPLE_TYPE_PROTOCOL, 0,
36730
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
711
36729
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
712 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CLIENT_IFACE,
36733
2ee6d6c2adb0 Better alignment
Ankit Vani <a@nevitus.org>
parents: 36731
diff changeset
713 bonjour_protocol_client_iface_init)
36730
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
714
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
715 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_SERVER_IFACE,
36733
2ee6d6c2adb0 Better alignment
Ankit Vani <a@nevitus.org>
parents: 36731
diff changeset
716 bonjour_protocol_server_iface_init)
36730
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
717
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
718 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_IM_IFACE,
36733
2ee6d6c2adb0 Better alignment
Ankit Vani <a@nevitus.org>
parents: 36731
diff changeset
719 bonjour_protocol_im_iface_init)
36730
66018273528a Refactored bonjour, gg, irc to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
720
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
721 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER,
36733
2ee6d6c2adb0 Better alignment
Ankit Vani <a@nevitus.org>
parents: 36731
diff changeset
722 bonjour_protocol_xfer_iface_init)
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36708
diff changeset
723 );
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36708
diff changeset
724
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
725 static PurplePluginInfo *
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
726 plugin_query(GError **error)
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
727 {
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
728 return purple_plugin_info_new(
36985
9faafe43603e Rename protocol plugin IDs to prpl-*
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
729 "id", "prpl-bonjour",
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36628
diff changeset
730 "name", "Bonjour Protocol",
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
731 "version", DISPLAY_VERSION,
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
732 "category", N_("Protocol"),
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
733 "summary", N_("Bonjour Protocol Plugin"),
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
734 "description", N_("Bonjour Protocol Plugin"),
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
735 "website", PURPLE_WEBSITE,
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
736 "abi-version", PURPLE_ABI_VERSION,
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
737 "flags", PURPLE_PLUGIN_INFO_FLAGS_INTERNAL |
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
738 PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD,
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
739 NULL
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
740 );
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
741 }
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
742
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
743 static gboolean
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
744 plugin_load(PurplePlugin *plugin, GError **error)
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
745 {
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36708
diff changeset
746 bonjour_protocol_register_type(plugin);
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36708
diff changeset
747
36628
3d43ca8d69ee Refactored the protocols to use the error argument of purple_protocols_{add/remove}
Ankit Vani <a@nevitus.org>
parents: 36621
diff changeset
748 my_protocol = purple_protocols_add(BONJOUR_TYPE_PROTOCOL, error);
3d43ca8d69ee Refactored the protocols to use the error argument of purple_protocols_{add/remove}
Ankit Vani <a@nevitus.org>
parents: 36621
diff changeset
749 if (!my_protocol)
36572
fdb3db620b38 Refactored bonjour to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
750 return FALSE;
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
751
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
752 initialize_default_account_values();
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
753
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
754 return TRUE;
11477
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
755 }
98b4f8643569 [gaim-migrate @ 13719]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
756
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
757 static gboolean
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
758 plugin_unload(PurplePlugin *plugin, GError **error)
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
759 {
36628
3d43ca8d69ee Refactored the protocols to use the error argument of purple_protocols_{add/remove}
Ankit Vani <a@nevitus.org>
parents: 36621
diff changeset
760 if (!purple_protocols_remove(my_protocol, error))
36572
fdb3db620b38 Refactored bonjour to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
761 return FALSE;
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
762
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
763 g_free(default_firstname);
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
764 g_free(default_lastname);
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
765
36517
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
766 return TRUE;
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
767 }
c3c4b1742be8 Refactored bonjour to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
768
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36708
diff changeset
769 PURPLE_PLUGIN_INIT(bonjour, plugin_query, plugin_load, plugin_unload);

mercurial