annotate libpurple/protocols/yahoo/libymsg.c @ 31534:a8cc50c2279f

Remove trailing whitespace
author Richard Laager <rlaager@wiktel.com>
date Tue, 04 Jan 2011 06:55:30 +0000
parents 86598f5d7ebd
children fa88dc1dcabb d88f3153170b ea2a155b4439
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1 /*
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2 * purple
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
6 * source distribution.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
7 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
11 * (at your option) any later version.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
12 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
16 * GNU General Public License for more details.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
17 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
21 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
22 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
23
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
24 #include "internal.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
25
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
26 #include "account.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
27 #include "accountopt.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
28 #include "blist.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
29 #include "cipher.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
30 #include "cmds.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
31 #include "core.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
32 #include "debug.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
33 #include "network.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
34 #include "notify.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
35 #include "privacy.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
36 #include "prpl.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
37 #include "proxy.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
38 #include "request.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
39 #include "server.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
40 #include "util.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
41 #include "version.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
42 #include "xmlnode.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
43
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
44 #include "libymsg.h"
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
45 #include "yahoochat.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
46 #include "yahoo_aliases.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
47 #include "yahoo_doodle.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
48 #include "yahoo_filexfer.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
49 #include "yahoo_friend.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
50 #include "yahoo_packet.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
51 #include "yahoo_picture.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
52 #include "ycht.h"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
53
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
54 /* #define YAHOO_DEBUG */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
55
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
56 /* #define TRY_WEBMESSENGER_LOGIN 0 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
57
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
58 /* One hour */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
59 #define PING_TIMEOUT 3600
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
60
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
61 /* One minute */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
62 #define KEEPALIVE_TIMEOUT 60
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
63
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
64 #ifdef TRY_WEBMESSENGER_LOGIN
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
65 static void yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
66 #endif /* TRY_WEBMESSENGER_LOGIN */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
67
27401
430eb9e9042a Correctly determine if the prpl calling a given function is the Yahoo! JAPAN
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27400
diff changeset
68 static gboolean yahoo_is_japan(PurpleAccount *account)
430eb9e9042a Correctly determine if the prpl calling a given function is the Yahoo! JAPAN
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27400
diff changeset
69 {
430eb9e9042a Correctly determine if the prpl calling a given function is the Yahoo! JAPAN
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27400
diff changeset
70 return purple_strequal(purple_account_get_protocol_id(account), "prpl-yahoojp");
430eb9e9042a Correctly determine if the prpl calling a given function is the Yahoo! JAPAN
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27400
diff changeset
71 }
430eb9e9042a Correctly determine if the prpl calling a given function is the Yahoo! JAPAN
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27400
diff changeset
72
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
73 static void yahoo_update_status(PurpleConnection *gc, const char *name, YahooFriend *f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
74 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
75 char *status = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
76
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
77 if (!gc || !name || !f || !purple_find_buddy(purple_connection_get_account(gc), name))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
78 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
79
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
80 switch (f->status) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
81 case YAHOO_STATUS_OFFLINE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
82 status = YAHOO_STATUS_TYPE_OFFLINE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
83 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
84 case YAHOO_STATUS_AVAILABLE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
85 status = YAHOO_STATUS_TYPE_AVAILABLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
86 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
87 case YAHOO_STATUS_BRB:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
88 status = YAHOO_STATUS_TYPE_BRB;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
89 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
90 case YAHOO_STATUS_BUSY:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
91 status = YAHOO_STATUS_TYPE_BUSY;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
92 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
93 case YAHOO_STATUS_NOTATHOME:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
94 status = YAHOO_STATUS_TYPE_NOTATHOME;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
95 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
96 case YAHOO_STATUS_NOTATDESK:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
97 status = YAHOO_STATUS_TYPE_NOTATDESK;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
98 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
99 case YAHOO_STATUS_NOTINOFFICE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
100 status = YAHOO_STATUS_TYPE_NOTINOFFICE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
101 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
102 case YAHOO_STATUS_ONPHONE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
103 status = YAHOO_STATUS_TYPE_ONPHONE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
104 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
105 case YAHOO_STATUS_ONVACATION:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
106 status = YAHOO_STATUS_TYPE_ONVACATION;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
107 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
108 case YAHOO_STATUS_OUTTOLUNCH:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
109 status = YAHOO_STATUS_TYPE_OUTTOLUNCH;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
110 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
111 case YAHOO_STATUS_STEPPEDOUT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
112 status = YAHOO_STATUS_TYPE_STEPPEDOUT;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
113 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
114 case YAHOO_STATUS_INVISIBLE: /* this should never happen? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
115 status = YAHOO_STATUS_TYPE_INVISIBLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
116 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
117 case YAHOO_STATUS_CUSTOM:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
118 case YAHOO_STATUS_IDLE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
119 if (!f->away)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
120 status = YAHOO_STATUS_TYPE_AVAILABLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
121 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
122 status = YAHOO_STATUS_TYPE_AWAY;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
123 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
124 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
125 purple_debug_warning("yahoo", "Warning, unknown status %d\n", f->status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
126 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
127 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
128
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
129 if (status) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
130 if (f->status == YAHOO_STATUS_CUSTOM)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
131 purple_prpl_got_user_status(purple_connection_get_account(gc), name, status, "message",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
132 yahoo_friend_get_status_message(f), NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
133 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
134 purple_prpl_got_user_status(purple_connection_get_account(gc), name, status, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
135 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
136
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
137 if (f->idle != 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
138 purple_prpl_got_user_idle(purple_connection_get_account(gc), name, TRUE, f->idle);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
139 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
140 purple_prpl_got_user_idle(purple_connection_get_account(gc), name, FALSE, 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
141
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
142 if (f->sms)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
143 purple_prpl_got_user_status(purple_connection_get_account(gc), name, YAHOO_STATUS_TYPE_MOBILE, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
144 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
145 purple_prpl_got_user_status_deactive(purple_connection_get_account(gc), name, YAHOO_STATUS_TYPE_MOBILE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
146 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
147
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
148 static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
149 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
150 PurpleAccount *account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
151 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
152 YahooFriend *f = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
153 char *name = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
154 gboolean unicode = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
155 char *message = NULL;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
156 YahooFederation fed = YAHOO_FEDERATION_NONE;
28829
380c77dad7b4 Fix a leak on status updates from federated buddies on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28797
diff changeset
157 char *fedname = NULL;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
158
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
159 if (pkt->service == YAHOO_SERVICE_LOGOFF && pkt->status == -1) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
160 if (!purple_account_get_remember_password(account))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
161 purple_account_set_password(account, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
162 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NAME_IN_USE,
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
163 _("You have signed on from another location"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
164 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
165 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
166
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
167 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
168 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
169
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
170 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
171 case 0: /* we won't actually do anything with this */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
172 case 1: /* we won't actually do anything with this */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
173 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
174 case 8: /* how many online buddies we have */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
175 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
176 case 7: /* the current buddy */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
177 /* update the previous buddy before changing the variables */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
178 if (f) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
179 if (message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
180 yahoo_friend_set_status_message(f, yahoo_string_decode(gc, message, unicode));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
181 if (name)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
182 yahoo_update_status(gc, name, f);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
183 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
184 name = message = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
185 f = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
186 if (pair->value && g_utf8_validate(pair->value, -1, NULL)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
187 GSList *tmplist;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
188
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
189 name = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
190
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
191 /* Look ahead to see if we have the federation info about the buddy */
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
192 for (tmplist = l->next; tmplist; tmplist = tmplist->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
193 struct yahoo_pair *p = tmplist->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
194 if (p->key == 7)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
195 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
196 if (p->key == 241) {
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
197 fed = strtol(p->value, NULL, 10);
28829
380c77dad7b4 Fix a leak on status updates from federated buddies on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28797
diff changeset
198 g_free(fedname);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
199 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
200 case YAHOO_FEDERATION_MSN:
28829
380c77dad7b4 Fix a leak on status updates from federated buddies on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28797
diff changeset
201 name = fedname = g_strconcat("msn/", name, NULL);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
202 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
203 case YAHOO_FEDERATION_OCS:
28829
380c77dad7b4 Fix a leak on status updates from federated buddies on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28797
diff changeset
204 name = fedname = g_strconcat("ocs/", name, NULL);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
205 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
206 case YAHOO_FEDERATION_IBM:
28829
380c77dad7b4 Fix a leak on status updates from federated buddies on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28797
diff changeset
207 name = fedname = g_strconcat("ibm/", name, NULL);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
208 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
209 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
210 default:
28829
380c77dad7b4 Fix a leak on status updates from federated buddies on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28797
diff changeset
211 fedname = NULL;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
212 break;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
213 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
214 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
215 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
216 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
217 f = yahoo_friend_find_or_new(gc, name);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
218 f->fed = fed;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
219 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
220 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
221 case 10: /* state */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
222 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
223 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
224
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
225 f->status = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
226 if ((f->status >= YAHOO_STATUS_BRB) && (f->status <= YAHOO_STATUS_STEPPEDOUT))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
227 f->away = 1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
228 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
229 f->away = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
230
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
231 if (f->status == YAHOO_STATUS_IDLE) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
232 /* Idle may have already been set in a more precise way in case 137 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
233 if (f->idle == 0)
28603
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
234 {
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
235 if(pkt->service == YAHOO_SERVICE_STATUS_15)
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
236 f->idle = -1;
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
237 else
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
238 f->idle = time(NULL);
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
239 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
240 } else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
241 f->idle = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
242
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
243 if (f->status != YAHOO_STATUS_CUSTOM)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
244 yahoo_friend_set_status_message(f, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
245
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
246 f->sms = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
247 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
248 case 19: /* custom message */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
249 if (f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
250 message = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
251 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
252 case 11: /* this is the buddy's session id */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
253 if (f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
254 f->session_id = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
255 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
256 case 17: /* in chat? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
257 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
258 case 47: /* is custom status away or not? 2=idle*/
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
259 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
260 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
261
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
262 /* I have no idea what it means when this is
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
263 * set when someone's available, but it doesn't
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
264 * mean idle. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
265 if (f->status == YAHOO_STATUS_AVAILABLE)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
266 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
267
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
268 f->away = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
269 if (f->away == 2) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
270 /* Idle may have already been set in a more precise way in case 137 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
271 if (f->idle == 0)
28603
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
272 {
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
273 if(pkt->service == YAHOO_SERVICE_STATUS_15)
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
274 f->idle = -1;
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
275 else
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
276 f->idle = time(NULL);
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
277 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
278 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
279
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
280 break;
28603
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
281 case 138: /* when value is 1, either we're not idle, or we are but won't say how long */
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
282 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
283 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
284
28603
860998956a4d Better, accurate handling of idle time for a yahoo buddy. Fixes #10099
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28602
diff changeset
285 if( (strtol(pair->value, NULL, 10) == 1) && (f->idle) )
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
286 f->idle = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
287 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
288 case 137: /* usually idle time in seconds, sometimes login time */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
289 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
290 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
291
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
292 if (f->status != YAHOO_STATUS_AVAILABLE)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
293 f->idle = time(NULL) - strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
294 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
295 case 13: /* bitmask, bit 0 = pager, bit 1 = chat, bit 2 = game */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
296 if (strtol(pair->value, NULL, 10) == 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
297 if (f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
298 f->status = YAHOO_STATUS_OFFLINE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
299 if (name) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
300 purple_prpl_got_user_status(account, name, "offline", NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
301 purple_prpl_got_user_status_deactive(account, name, YAHOO_STATUS_TYPE_MOBILE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
302 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
303 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
304 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
305 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
306 case 60: /* SMS */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
307 if (f) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
308 f->sms = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
309 yahoo_update_status(gc, name, f);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
310 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
311 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
312 case 197: /* Avatars */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
313 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
314 guchar *decoded;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
315 char *tmp;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
316 gsize len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
317
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
318 if (pair->value) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
319 decoded = purple_base64_decode(pair->value, &len);
31053
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
320 if (decoded && len > 0) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
321 tmp = purple_str_binary_to_ascii(decoded, len);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
322 purple_debug_info("yahoo", "Got key 197, value = %s\n", tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
323 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
324 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
325 g_free(decoded);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
326 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
327 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
328 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
329 case 192: /* Pictures, aka Buddy Icons, checksum */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
330 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
331 /* FIXME: Please, if you know this protocol,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
332 * FIXME: fix up the strtol() stuff if possible. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
333 int cksum = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
334 const char *locksum = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
335 PurpleBuddy *b;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
336
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
337 if (!name)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
338 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
339
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
340 b = purple_find_buddy(gc->account, name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
341
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
342 if (!cksum || (cksum == -1)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
343 if (f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
344 yahoo_friend_set_buddy_icon_need_request(f, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
345 purple_buddy_icons_set_for_user(gc->account, name, NULL, 0, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
346 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
347 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
348
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
349 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
350 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
351
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
352 yahoo_friend_set_buddy_icon_need_request(f, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
353 if (b) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
354 locksum = purple_buddy_icons_get_checksum_for_user(b);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
355 if (!locksum || (cksum != strtol(locksum, NULL, 10)))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
356 yahoo_send_picture_request(gc, name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
357 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
358
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
359 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
360 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
361 case 16: /* Custom error message */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
362 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
363 char *tmp = yahoo_string_decode(gc, pair->value, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
364 purple_notify_error(gc, NULL, tmp, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
365 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
366 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
367 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
368 case 97: /* Unicode status message */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
369 unicode = !strcmp(pair->value, "1");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
370 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
371 case 244: /* client version number. Yahoo Client Detection */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
372 if(f && strtol(pair->value, NULL, 10))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
373 f->version_id = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
374 break;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
375 case 241: /* Federated network buddy belongs to */
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
376 break; /* We process this when get '7' */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
377 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
378 purple_debug_warning("yahoo",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
379 "Unknown status key %d\n", pair->key);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
380 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
381 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
382
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
383 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
384 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
385
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
386 if (f) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
387 if (pkt->service == YAHOO_SERVICE_LOGOFF)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
388 f->status = YAHOO_STATUS_OFFLINE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
389 if (message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
390 yahoo_friend_set_status_message(f, yahoo_string_decode(gc, message, unicode));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
391
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
392 if (name) /* update the last buddy */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
393 yahoo_update_status(gc, name, f);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
394 }
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
395
28829
380c77dad7b4 Fix a leak on status updates from federated buddies on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28797
diff changeset
396 g_free(fedname);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
397 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
398
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
399 static void yahoo_do_group_check(PurpleAccount *account, GHashTable *ht, const char *name, const char *group)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
400 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
401 PurpleBuddy *b;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
402 PurpleGroup *g;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
403 GSList *list, *i;
30630
33989e3a449b Minor cleanup
Mark Doliner <mark@kingant.net>
parents: 30610
diff changeset
404 gboolean onlist = FALSE;
30635
c4cbe5f992ce Initialize pointer, fix a typo to fix a crash.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30630
diff changeset
405 char *oname = NULL;
30630
33989e3a449b Minor cleanup
Mark Doliner <mark@kingant.net>
parents: 30610
diff changeset
406
30640
3ae0814ae727 So it turns out the name vs oname thing wasn't a typo on Mark's part. I just
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30636
diff changeset
407 if (g_hash_table_lookup_extended(ht, name, (gpointer *)&oname, (gpointer *)&list))
3ae0814ae727 So it turns out the name vs oname thing wasn't a typo on Mark's part. I just
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30636
diff changeset
408 g_hash_table_steal(ht, oname);
30630
33989e3a449b Minor cleanup
Mark Doliner <mark@kingant.net>
parents: 30610
diff changeset
409 else
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
410 list = purple_find_buddies(account, name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
411
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
412 for (i = list; i; i = i->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
413 b = i->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
414 g = purple_buddy_get_group(b);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
415 if (!purple_utf8_strcasecmp(group, purple_group_get_name(g))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
416 purple_debug_misc("yahoo",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
417 "Oh good, %s is in the right group (%s).\n", name, group);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
418 list = g_slist_delete_link(list, i);
30630
33989e3a449b Minor cleanup
Mark Doliner <mark@kingant.net>
parents: 30610
diff changeset
419 onlist = TRUE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
420 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
421 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
422 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
423
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
424 if (!onlist) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
425 purple_debug_misc("yahoo",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
426 "Uhoh, %s isn't on the list (or not in this group), adding him to group %s.\n", name, group);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
427 if (!(g = purple_find_group(group))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
428 g = purple_group_new(group);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
429 purple_blist_add_group(g, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
430 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
431 b = purple_buddy_new(account, name, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
432 purple_blist_add_buddy(b, NULL, g, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
433 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
434
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
435 if (list) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
436 if (!oname)
30640
3ae0814ae727 So it turns out the name vs oname thing wasn't a typo on Mark's part. I just
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30636
diff changeset
437 oname = g_strdup(name);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
438 g_hash_table_insert(ht, oname, list);
30630
33989e3a449b Minor cleanup
Mark Doliner <mark@kingant.net>
parents: 30610
diff changeset
439 } else
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
440 g_free(oname);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
441 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
442
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
443 static void yahoo_do_group_cleanup(gpointer key, gpointer value, gpointer user_data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
444 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
445 char *name = key;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
446 GSList *list = value, *i;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
447 PurpleBuddy *b;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
448 PurpleGroup *g;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
449
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
450 for (i = list; i; i = i->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
451 b = i->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
452 g = purple_buddy_get_group(b);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
453 purple_debug_misc("yahoo", "Deleting Buddy %s from group %s.\n", name,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
454 purple_group_get_name(g));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
455 purple_blist_remove_buddy(b);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
456 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
457 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
458
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
459 static char *_getcookie(char *rawcookie)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
460 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
461 char *cookie = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
462 char *tmpcookie;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
463 char *cookieend;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
464
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
465 if (strlen(rawcookie) < 2)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
466 return NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
467 tmpcookie = g_strdup(rawcookie+2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
468 cookieend = strchr(tmpcookie, ';');
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
469
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
470 if (cookieend)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
471 *cookieend = '\0';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
472
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
473 cookie = g_strdup(tmpcookie);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
474 g_free(tmpcookie);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
475
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
476 return cookie;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
477 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
478
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
479 static void yahoo_process_cookie(YahooData *yd, char *c)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
480 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
481 if (c[0] == 'Y') {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
482 if (yd->cookie_y)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
483 g_free(yd->cookie_y);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
484 yd->cookie_y = _getcookie(c);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
485 } else if (c[0] == 'T') {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
486 if (yd->cookie_t)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
487 g_free(yd->cookie_t);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
488 yd->cookie_t = _getcookie(c);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
489 } else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
490 purple_debug_info("yahoo", "Unrecognized cookie '%c'\n", c[0]);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
491 yd->cookies = g_slist_prepend(yd->cookies, g_strdup(c));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
492 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
493
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
494 static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
495 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
496 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
497
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
498 PurpleAccount *account = purple_connection_get_account(gc);
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
499 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
500 GHashTable *ht;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
501 char *norm_bud = NULL;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
502 char *temp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
503 YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
504 /* But what if you had no friends? */
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
505 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
506 int stealth = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
507
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
508 ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
509
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
510 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
511 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
512 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
513
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
514 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
515 case 302:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
516 /* This is always 318 before a group, 319 before the first s/n in a group, 320 before any ignored s/n.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
517 * It is not sent for s/n's in a group after the first.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
518 * All ignored s/n's are listed last, so when we see a 320 we clear the group and begin marking the
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
519 * s/n's as ignored. It is always followed by an identical 300 key.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
520 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
521 if (pair->value && !strcmp(pair->value, "320")) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
522 /* No longer in any group; this indicates the start of the ignore list. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
523 g_free(yd->current_list15_grp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
524 yd->current_list15_grp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
525 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
526
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
527 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
528 case 301: /* This is 319 before all s/n's in a group after the first. It is followed by an identical 300. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
529 if(temp != NULL) {
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
530 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
531 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
532 norm_bud = g_strconcat("msn/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
533 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
534 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
535 norm_bud = g_strconcat("ocs/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
536 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
537 case YAHOO_FEDERATION_IBM:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
538 norm_bud = g_strconcat("ibm/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
539 break;
29394
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
540 case YAHOO_FEDERATION_PBX:
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
541 norm_bud = g_strconcat("pbx/", temp, NULL);
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
542 break;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
543 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
544 norm_bud = g_strdup(temp);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
545 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
546 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
547 if (yd->current_list15_grp) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
548 /* This buddy is in a group */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
549 f = yahoo_friend_find_or_new(gc, norm_bud);
30846
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30758
diff changeset
550 if (!purple_find_buddy(account, norm_bud)) {
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30758
diff changeset
551 PurpleBuddy *b;
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30758
diff changeset
552 PurpleGroup *g;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
553 if (!(g = purple_find_group(yd->current_list15_grp))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
554 g = purple_group_new(yd->current_list15_grp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
555 purple_blist_add_group(g, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
556 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
557 b = purple_buddy_new(account, norm_bud, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
558 purple_blist_add_buddy(b, NULL, g, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
559 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
560 yahoo_do_group_check(account, ht, norm_bud, yd->current_list15_grp);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
561 if(fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
562 f->fed = fed;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
563 purple_debug_info("yahoo", "Setting federation to %d\n", f->fed);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
564 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
565 if(stealth == 2)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
566 f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
567
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
568 /* set p2p status not connected and no p2p packet sent */
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
569 if(fed == YAHOO_FEDERATION_NONE) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
570 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
571 f->p2p_packet_sent = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
572 } else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
573 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_DO_NOT_CONNECT);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
574 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
575 /* This buddy is on the ignore list (and therefore in no group) */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
576 purple_debug_info("yahoo", "%s adding %s to the deny list because of the ignore list / no group was found\n",account->username, norm_bud);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
577 purple_privacy_deny_add(account, norm_bud, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
578 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
579
28162
44930be7114b Fix two memory leaks. We were setting norm_bud and temp to NULL without
Mark Doliner <mark@kingant.net>
parents: 28137
diff changeset
580 g_free(norm_bud);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
581 norm_bud=NULL;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
582 fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
583 stealth = 0;
28162
44930be7114b Fix two memory leaks. We were setting norm_bud and temp to NULL without
Mark Doliner <mark@kingant.net>
parents: 28137
diff changeset
584 g_free(temp);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
585 temp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
586 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
587 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
588 case 300: /* This is 318 before a group, 319 before any s/n in a group, and 320 before any ignored s/n. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
589 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
590 case 65: /* This is the group */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
591 g_free(yd->current_list15_grp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
592 yd->current_list15_grp = yahoo_string_decode(gc, pair->value, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
593 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
594 case 7: /* buddy's s/n */
28162
44930be7114b Fix two memory leaks. We were setting norm_bud and temp to NULL without
Mark Doliner <mark@kingant.net>
parents: 28137
diff changeset
595 g_free(temp);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
596 temp = g_strdup(purple_normalize(account, pair->value));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
597 break;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
598 case 241: /* user on federated network */
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
599 fed = strtol(pair->value, NULL, 10);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
600 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
601 case 59: /* somebody told cookies come here too, but im not sure */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
602 yahoo_process_cookie(yd, pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
603 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
604 case 317: /* Stealth Setting */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
605 stealth = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
606 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
607 /* case 242: */ /* this seems related to 241 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
608 /* break; */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
609 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
610 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
611
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
612 g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
613
28000
05331a8eafb3 Fix #9745 as the submitter suggested. This doesn't appear to hurt anything.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27976
diff changeset
614 /* The reporter of ticket #9745 determined that we weren't retrieving the
05331a8eafb3 Fix #9745 as the submitter suggested. This doesn't appear to hurt anything.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27976
diff changeset
615 * aliases during buddy list retrieval, so we never updated aliases that
05331a8eafb3 Fix #9745 as the submitter suggested. This doesn't appear to hurt anything.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27976
diff changeset
616 * changed while we were signed off. */
05331a8eafb3 Fix #9745 as the submitter suggested. This doesn't appear to hurt anything.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27976
diff changeset
617 yahoo_fetch_aliases(gc);
05331a8eafb3 Fix #9745 as the submitter suggested. This doesn't appear to hurt anything.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27976
diff changeset
618
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
619 /* Now that we have processed the buddy list, we can say yahoo has connected */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
620 purple_connection_set_display_name(gc, purple_normalize(account, purple_account_get_username(account)));
27976
482a5edc4799 kevin_BB on irc was reporting that doing things on connect didn't work,
Ka-Hing Cheung <khc@hxbc.us>
parents: 27679
diff changeset
621 yd->logged_in = TRUE;
482a5edc4799 kevin_BB on irc was reporting that doing things on connect didn't work,
Ka-Hing Cheung <khc@hxbc.us>
parents: 27679
diff changeset
622 purple_debug_info("yahoo","Authentication: Connection established\n");
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
623 purple_connection_set_state(gc, PURPLE_CONNECTED);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
624 if (yd->picture_upload_todo) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
625 yahoo_buddy_icon_upload(gc, yd->picture_upload_todo);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
626 yd->picture_upload_todo = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
627 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
628 yahoo_set_status(account, purple_account_get_active_status(account));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
629
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
630 g_hash_table_destroy(ht);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
631 g_free(temp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
632 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
633
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
634 static void yahoo_process_list(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
635 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
636 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
637 gboolean export = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
638 gboolean got_serv_list = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
639 YahooFriend *f = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
640 PurpleAccount *account = purple_connection_get_account(gc);
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
641 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
642 GHashTable *ht;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
643
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
644 char **lines;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
645 char **split;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
646 char **buddies;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
647 char **tmp, **bud, *norm_bud;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
648 char *grp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
649
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
650 if (pkt->id)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
651 yd->session_id = pkt->id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
652
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
653 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
654 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
655 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
656
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
657 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
658 case 87:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
659 if (!yd->tmp_serv_blist)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
660 yd->tmp_serv_blist = g_string_new(pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
661 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
662 g_string_append(yd->tmp_serv_blist, pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
663 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
664 case 88:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
665 if (!yd->tmp_serv_ilist)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
666 yd->tmp_serv_ilist = g_string_new(pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
667 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
668 g_string_append(yd->tmp_serv_ilist, pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
669 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
670 case 89:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
671 yd->profiles = g_strsplit(pair->value, ",", -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
672 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
673 case 59: /* cookies, yum */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
674 yahoo_process_cookie(yd, pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
675 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
676 case YAHOO_SERVICE_PRESENCE_PERM:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
677 if (!yd->tmp_serv_plist)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
678 yd->tmp_serv_plist = g_string_new(pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
679 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
680 g_string_append(yd->tmp_serv_plist, pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
681 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
682 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
683 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
684
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
685 if (pkt->status != 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
686 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
687
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
688 if (yd->tmp_serv_blist) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
689 ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
690
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
691 lines = g_strsplit(yd->tmp_serv_blist->str, "\n", -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
692 for (tmp = lines; *tmp; tmp++) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
693 split = g_strsplit(*tmp, ":", 2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
694 if (!split)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
695 continue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
696 if (!split[0] || !split[1]) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
697 g_strfreev(split);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
698 continue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
699 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
700 grp = yahoo_string_decode(gc, split[0], FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
701 buddies = g_strsplit(split[1], ",", -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
702 for (bud = buddies; bud && *bud; bud++) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
703 norm_bud = g_strdup(purple_normalize(account, *bud));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
704 f = yahoo_friend_find_or_new(gc, norm_bud);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
705
30846
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30758
diff changeset
706 if (!purple_find_buddy(account, norm_bud)) {
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30758
diff changeset
707 PurpleBuddy *b;
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30758
diff changeset
708 PurpleGroup *g;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
709 if (!(g = purple_find_group(grp))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
710 g = purple_group_new(grp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
711 purple_blist_add_group(g, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
712 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
713 b = purple_buddy_new(account, norm_bud, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
714 purple_blist_add_buddy(b, NULL, g, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
715 export = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
716 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
717
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
718 yahoo_do_group_check(account, ht, norm_bud, grp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
719 /* set p2p status not connected and no p2p packet sent */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
720 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
721 f->p2p_packet_sent = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
722
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
723 g_free(norm_bud);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
724 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
725 g_strfreev(buddies);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
726 g_strfreev(split);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
727 g_free(grp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
728 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
729 g_strfreev(lines);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
730
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
731 g_string_free(yd->tmp_serv_blist, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
732 yd->tmp_serv_blist = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
733 g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
734 g_hash_table_destroy(ht);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
735 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
736
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
737 if (yd->tmp_serv_ilist) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
738 buddies = g_strsplit(yd->tmp_serv_ilist->str, ",", -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
739 for (bud = buddies; bud && *bud; bud++) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
740 /* The server is already ignoring the user */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
741 got_serv_list = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
742 purple_privacy_deny_add(account, *bud, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
743 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
744 g_strfreev(buddies);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
745
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
746 g_string_free(yd->tmp_serv_ilist, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
747 yd->tmp_serv_ilist = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
748 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
749
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
750 if (got_serv_list &&
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
751 ((account->perm_deny != PURPLE_PRIVACY_ALLOW_BUDDYLIST) &&
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
752 (account->perm_deny != PURPLE_PRIVACY_DENY_ALL) &&
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
753 (account->perm_deny != PURPLE_PRIVACY_ALLOW_USERS)))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
754 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
755 account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
756 purple_debug_info("yahoo", "%s privacy defaulting to PURPLE_PRIVACY_DENY_USERS.\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
757 account->username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
758 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
759
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
760 if (yd->tmp_serv_plist) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
761 buddies = g_strsplit(yd->tmp_serv_plist->str, ",", -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
762 for (bud = buddies; bud && *bud; bud++) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
763 f = yahoo_friend_find(gc, *bud);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
764 if (f) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
765 purple_debug_info("yahoo", "%s setting presence for %s to PERM_OFFLINE\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
766 account->username, *bud);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
767 f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
768 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
769 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
770 g_strfreev(buddies);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
771 g_string_free(yd->tmp_serv_plist, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
772 yd->tmp_serv_plist = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
773
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
774 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
775 /* Now that we've got the list, request aliases */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
776 yahoo_fetch_aliases(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
777 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
778
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
779 /* pkt_type is YAHOO_PKT_TYPE_SERVER if pkt arrives from yahoo server, YAHOO_PKT_TYPE_P2P if pkt arrives through p2p */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
780 static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt, yahoo_pkt_type pkt_type)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
781 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
782 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
783 char *msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
784 char *from = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
785 char *stat = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
786 char *game = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
787 YahooFriend *f = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
788 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
789 gint val_11 = 0;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
790 YahooData *yd = gc->proto_data;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
791 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
792
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
793 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
794
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
795 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
796 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
797 if (pair->key == 4 || pair->key == 1)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
798 from = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
799 if (pair->key == 49)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
800 msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
801 if (pair->key == 13)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
802 stat = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
803 if (pair->key == 14)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
804 game = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
805 if (pair->key == 11)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
806 val_11 = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
807 if (pair->key == 241)
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
808 fed = strtol(pair->value, NULL, 10);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
809 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
810 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
811
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
812 if (!from || !msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
813 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
814
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
815 /* disconnect the peer if connected through p2p and sends wrong value for session id */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
816 if( (pkt_type == YAHOO_PKT_TYPE_P2P) && (val_11 != yd->session_id) ) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
817 purple_debug_warning("yahoo","p2p: %s sent us notify with wrong session id. Disconnecting p2p connection to peer\n", from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
818 /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
819 g_hash_table_remove(yd->peers, from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
820 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
821 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
822
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
823 if (!g_ascii_strncasecmp(msg, "TYPING", strlen("TYPING"))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
824 && (purple_privacy_check(account, from)))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
825 {
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
826 char *fed_from = from;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
827 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
828 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
829 fed_from = g_strconcat("msn/", from, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
830 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
831 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
832 fed_from = g_strconcat("ocs/", from, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
833 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
834 case YAHOO_FEDERATION_IBM:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
835 fed_from = g_strconcat("ibm/", from, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
836 break;
29394
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
837 case YAHOO_FEDERATION_PBX:
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
838 fed_from = g_strconcat("pbx/", from, NULL);
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
839 break;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
840 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
841 default:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
842 break;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
843 }
30635
c4cbe5f992ce Initialize pointer, fix a typo to fix a crash.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30630
diff changeset
844
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
845 if (*stat == '1')
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
846 serv_got_typing(gc, fed_from, 0, PURPLE_TYPING);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
847 else
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
848 serv_got_typing_stopped(gc, fed_from);
30635
c4cbe5f992ce Initialize pointer, fix a typo to fix a crash.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30630
diff changeset
849
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
850 if (fed_from != from)
29394
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
851 g_free(fed_from);
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
852
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
853 } else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
854 PurpleBuddy *bud = purple_find_buddy(account, from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
855
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
856 if (!bud) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
857 purple_debug_warning("yahoo",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
858 "%s is playing a game, and doesn't want you to know.\n", from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
859 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
860
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
861 f = yahoo_friend_find(gc, from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
862 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
863 return; /* if they're not on the list, don't bother */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
864
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
865 yahoo_friend_set_game(f, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
866
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
867 if (*stat == '1') {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
868 yahoo_friend_set_game(f, game);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
869 if (bud)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
870 yahoo_update_status(gc, from, f);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
871 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
872 } else if (!g_ascii_strncasecmp(msg, "WEBCAMINVITE", strlen("WEBCAMINVITE"))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
873 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, from, account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
874 char *buf = g_strdup_printf(_("%s has sent you a webcam invite, which is not yet supported."), from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
875 purple_conversation_write(conv, NULL, buf, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
876 g_free(buf);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
877 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
878 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
879
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
880
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
881 struct _yahoo_im {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
882 char *from;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
883 char *active_id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
884 int time;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
885 int utf8;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
886 int buddy_icon;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
887 char *id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
888 char *msg;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
889 YahooFederation fed;
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
890 char *fed_from;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
891 };
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
892
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
893 static void yahoo_process_sms_message(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
894 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
895 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
896 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
897 struct _yahoo_im *sms = NULL;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
898 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
899 char *server_msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
900 char *m;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
901
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
902 yd = gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
903 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
904
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
905 while (l != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
906 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
907 if (pair->key == 4) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
908 sms = g_new0(struct _yahoo_im, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
909 sms->from = g_strdup_printf("+%s", pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
910 sms->time = time(NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
911 sms->utf8 = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
912 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
913 if (pair->key == 14) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
914 if (sms)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
915 sms->msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
916 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
917 if (pair->key == 68)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
918 if(sms)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
919 g_hash_table_insert(yd->sms_carrier, g_strdup(sms->from), g_strdup(pair->value));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
920 if (pair->key == 16)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
921 server_msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
922 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
923 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
924
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
925 if( (pkt->status == -1) || (pkt->status == YAHOO_STATUS_DISCONNECTED) ) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
926 if (server_msg) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
927 PurpleConversation *c;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
928 c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms->from, account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
929 if (c == NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
930 c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sms->from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
931 purple_conversation_write(c, NULL, server_msg, PURPLE_MESSAGE_SYSTEM, time(NULL));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
932 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
933 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
934 purple_notify_error(gc, NULL, _("Your SMS was not delivered"), NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
935
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
936 g_free(sms->from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
937 g_free(sms);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
938 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
939 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
940
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
941 if (!sms->from || !sms->msg) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
942 g_free(sms);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
943 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
944 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
945
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
946 m = yahoo_string_decode(gc, sms->msg, sms->utf8);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
947 serv_got_im(gc, sms->from, m, 0, sms->time);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
948
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
949 g_free(m);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
950 g_free(sms->from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
951 g_free(sms);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
952 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
953
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
954 /* pkt_type is YAHOO_PKT_TYPE_SERVER if pkt arrives from yahoo server, YAHOO_PKT_TYPE_P2P if pkt arrives through p2p */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
955 static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt, yahoo_pkt_type pkt_type)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
956 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
957 PurpleAccount *account;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
958 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
959 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
960 GSList *list = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
961 struct _yahoo_im *im = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
962
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
963 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
964
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
965 if (pkt->status <= 1 || pkt->status == 5 || pkt->status == YAHOO_STATUS_OFFLINE) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
966 /* messages are received with status YAHOO_STATUS_OFFLINE in case of p2p */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
967 while (l != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
968 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
969 if (pair->key == 4 || pair->key == 1) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
970 im = g_new0(struct _yahoo_im, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
971 list = g_slist_append(list, im);
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
972 im->from = pair->value;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
973 im->time = time(NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
974 im->utf8 = TRUE;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
975 im->fed = YAHOO_FEDERATION_NONE;
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
976 im->fed_from = g_strdup(im->from);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
977 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
978 if (im && pair->key == 5)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
979 im->active_id = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
980 if (pair->key == 97)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
981 if (im)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
982 im->utf8 = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
983 if (pair->key == 15)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
984 if (im)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
985 im->time = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
986 if (pair->key == 206)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
987 if (im)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
988 im->buddy_icon = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
989 if (pair->key == 14) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
990 if (im)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
991 im->msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
992 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
993 if (im && pair->key == 241) {
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
994 im->fed = strtol(pair->value, NULL, 10);
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
995 g_free(im->fed_from);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
996 switch (im->fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
997 case YAHOO_FEDERATION_MSN:
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
998 im->fed_from = g_strconcat("msn/",im->from, NULL);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
999 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1000 case YAHOO_FEDERATION_OCS:
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1001 im->fed_from = g_strconcat("ocs/",im->from, NULL);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1002 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1003 case YAHOO_FEDERATION_IBM:
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1004 im->fed_from = g_strconcat("ibm/",im->from, NULL);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1005 break;
29394
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
1006 case YAHOO_FEDERATION_PBX:
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
1007 im->fed_from = g_strconcat("pbx/",im->from, NULL);
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
1008 break;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1009 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1010 default:
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1011 im->fed_from = g_strdup(im->from);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1012 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1013 }
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1014 purple_debug_info("yahoo", "Message from federated (%d) buddy %s.\n", im->fed, im->fed_from);
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
1015
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1016 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1017 /* peer session id */
28796
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1018 if (im && (pair->key == 11)) {
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1019 /* disconnect the peer if connected through p2p and sends wrong value for session id */
29394
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
1020 if( (im->fed == YAHOO_FEDERATION_NONE) && (pkt_type == YAHOO_PKT_TYPE_P2P)
28796
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1021 && (yd->session_id != strtol(pair->value, NULL, 10)) )
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1022 {
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1023 purple_debug_warning("yahoo","p2p: %s sent us message with wrong session id. Disconnecting p2p connection to peer\n", im->fed_from);
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1024 /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1025 g_hash_table_remove(yd->peers, im->fed_from);
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1026 g_free(im->fed_from);
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1027 g_free(im);
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1028 return; /* Not sure whether we should process remaining IMs in this packet */
c46819108809 Make checking of p2p packet with invalid id per IM instead of per packet.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28795
diff changeset
1029 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1030 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1031 /* IMV key */
28797
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1032 if (im && pair->key == 63)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1033 {
28797
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1034 /* Check for the Doodle IMV, no IMvironment for federated buddies */
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1035 if (im->from != NULL && im->fed == YAHOO_FEDERATION_NONE)
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1036 {
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1037 g_hash_table_replace(yd->imvironments, g_strdup(im->from), g_strdup(pair->value));
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1038
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1039 if (strstr(pair->value, "doodle;") != NULL)
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1040 {
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1041 PurpleWhiteboard *wb;
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1042
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1043 if (!purple_privacy_check(account, im->from)) {
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1044 purple_debug_info("yahoo", "Doodle request from %s dropped.\n",
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1045 im->from);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1046 g_free(im->fed_from);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1047 g_free(im);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1048 return;
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1049 }
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1050 /* I'm not sure the following ever happens -DAA */
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1051 wb = purple_whiteboard_get_session(account, im->from);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1052
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1053 /* If a Doodle session doesn't exist between this user */
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1054 if(wb == NULL)
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1055 {
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1056 doodle_session *ds;
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1057 wb = purple_whiteboard_create(account, im->from,
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1058 DOODLE_STATE_REQUESTED);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1059 ds = wb->proto_data;
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1060 ds->imv_key = g_strdup(pair->value);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1061
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1062 yahoo_doodle_command_send_request(gc, im->from, pair->value);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1063 yahoo_doodle_command_send_ready(gc, im->from, pair->value);
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1064 }
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1065 }
335062a2d305 Implement IMvironment check per IM, not global
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28796
diff changeset
1066 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1067 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1068 if (pair->key == 429)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1069 if (im)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1070 im->id = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1071 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1072 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1073 } else if (pkt->status == 2) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1074 purple_notify_error(gc, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1075 _("Your Yahoo! message did not get sent."), NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1076 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1077
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1078 for (l = list; l; l = l->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1079 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1080 char *m, *m2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1081 im = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1082
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1083 if (!im->fed_from || !im->msg) {
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1084 g_free(im->fed_from);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1085 g_free(im);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1086 continue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1087 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1088
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1089 if (!purple_privacy_check(account, im->fed_from)) {
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1090 purple_debug_info("yahoo", "Message from %s dropped.\n", im->fed_from);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1091 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1092 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1093
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1094 /*
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1095 * TODO: Is there anything else we should check when determining whether
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1096 * we should send an acknowledgement?
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1097 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1098 if (im->id != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1099 /* Send acknowledgement. If we don't do this then the official
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1100 * Yahoo Messenger client for Windows will send us the same
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1101 * message 7 seconds later as an offline message. This is true
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1102 * for at least version 9.0.0.2162 on Windows XP. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1103 struct yahoo_packet *pkt2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1104 pkt2 = yahoo_packet_new(YAHOO_SERVICE_MESSAGE_ACK,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1105 YAHOO_STATUS_AVAILABLE, pkt->id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1106 yahoo_packet_hash(pkt2, "ssisii",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1107 1, im->active_id, /* May not always be the connection's display name */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1108 5, im->from,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1109 302, 430,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1110 430, im->id,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1111 303, 430,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1112 450, 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1113 yahoo_packet_send_and_free(pkt2, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1114 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1115
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1116 m = yahoo_string_decode(gc, im->msg, im->utf8);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1117 /* This may actually not be necessary, but it appears
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1118 * that at least at one point some clients were sending
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1119 * "\r\n" as line delimiters, so we want to avoid double
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1120 * lines. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1121 m2 = purple_strreplace(m, "\r\n", "\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1122 g_free(m);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1123 m = m2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1124 purple_util_chrreplace(m, '\r', '\n');
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1125 if (!strcmp(m, "<ding>")) {
29700
9bc902d88fa2 Fix compilation error
Marcus Lundblad <ml@update.uu.se>
parents: 29697
diff changeset
1126 PurpleConversation *conv = NULL;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1127 char *username;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1128
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1129 username = g_markup_escape_text(im->fed_from, -1);
29700
9bc902d88fa2 Fix compilation error
Marcus Lundblad <ml@update.uu.se>
parents: 29697
diff changeset
1130 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY,
9bc902d88fa2 Fix compilation error
Marcus Lundblad <ml@update.uu.se>
parents: 29697
diff changeset
1131 username, account);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1132 purple_prpl_got_attention(gc, username, YAHOO_BUZZ);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1133 g_free(username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1134 g_free(m);
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1135 g_free(im->fed_from);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1136 g_free(im);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1137 continue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1138 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1139
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1140 m2 = yahoo_codes_to_html(m);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1141 g_free(m);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1142
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1143 serv_got_im(gc, im->fed_from, m2, 0, im->time);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1144 g_free(m2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1145
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1146 /* Official clients don't share buddy images with federated buddies */
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1147 if (im->fed == YAHOO_FEDERATION_NONE) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1148 if ((f = yahoo_friend_find(gc, im->from)) && im->buddy_icon == 2) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1149 if (yahoo_friend_get_buddy_icon_need_request(f)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1150 yahoo_send_picture_request(gc, im->from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1151 yahoo_friend_set_buddy_icon_need_request(f, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1152 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1153 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1154 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1155
28795
318ac22eb05d Fix a crash on receiving an offline message from a federated buddy. Also handle federated buddy per IM. Refs #9814
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28754
diff changeset
1156 g_free(im->fed_from);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1157 g_free(im);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1158 }
28754
29e96fb6cff3 Yahoo prpl is crashing everytime a message from a yahoo buddy is received (have not checked federated ids).
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28733
diff changeset
1159
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1160 g_slist_free(list);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1161 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1162
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1163 static void yahoo_process_sysmessage(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1164 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1165 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1166 char *prim, *me = NULL, *msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1167
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1168 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1169 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1170
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1171 if (pair->key == 5)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1172 me = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1173 if (pair->key == 14)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1174 msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1175
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1176 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1177 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1178
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1179 if (!msg || !g_utf8_validate(msg, -1, NULL))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1180 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1181
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1182 prim = g_strdup_printf(_("Yahoo! system message for %s:"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1183 me?me:purple_connection_get_display_name(gc));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1184 purple_notify_info(NULL, NULL, prim, msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1185 g_free(prim);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1186 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1187
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1188 struct yahoo_add_request {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1189 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1190 char *id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1191 char *who;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1192 YahooFederation fed;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1193 };
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1194
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1195 static void
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1196 yahoo_buddy_add_authorize_cb(gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1197 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1198 struct yahoo_add_request *add_req = data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1199 struct yahoo_packet *pkt;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
1200 YahooData *yd = add_req->gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1201 const char *who = add_req->who;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1202
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1203 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1204 if (add_req->fed) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1205 who += 4;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1206 yahoo_packet_hash(pkt, "ssiii",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1207 1, add_req->id,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1208 5, who,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1209 241, add_req->fed,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1210 13, 1,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1211 334, 0);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1212 }
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1213 else {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1214 yahoo_packet_hash(pkt, "ssii",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1215 1, add_req->id,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1216 5, who,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1217 13, 1,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1218 334, 0);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1219 }
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
1220
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1221 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1222
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1223 g_free(add_req->id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1224 g_free(add_req->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1225 g_free(add_req);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1226 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1227
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1228 static void
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1229 yahoo_buddy_add_deny_cb(struct yahoo_add_request *add_req, const char *msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1230 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
1231 YahooData *yd = add_req->gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1232 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1233 char *encoded_msg = NULL;
27517
b00f138c850a Fix denying auth requests from MSN buddies, and fix a leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27500
diff changeset
1234 const char *who = add_req->who;
b00f138c850a Fix denying auth requests from MSN buddies, and fix a leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27500
diff changeset
1235
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1236 if (msg && *msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1237 encoded_msg = yahoo_string_encode(add_req->gc, msg, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1238
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1239 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15,
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
1240 YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1241
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1242 if (add_req->fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1243 who += 4; /* Skip fed identifier (msn|ocs|ibm)/' */
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1244 yahoo_packet_hash(pkt, "ssiiiis",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1245 1, add_req->id,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1246 5, who,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1247 241, add_req->fed,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1248 13, 2,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1249 334, 0,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1250 97, 1,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1251 14, encoded_msg ? encoded_msg : "");
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1252 }
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1253 else {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1254 yahoo_packet_hash(pkt, "ssiiis",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1255 1, add_req->id,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1256 5, who,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1257 13, 2,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1258 334, 0,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1259 97, 1,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1260 14, encoded_msg ? encoded_msg : "");
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1261 }
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1262
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1263
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1264 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1265
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1266 g_free(encoded_msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1267
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1268 g_free(add_req->id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1269 g_free(add_req->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1270 g_free(add_req);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1271 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1272
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1273 static void
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1274 yahoo_buddy_add_deny_noreason_cb(struct yahoo_add_request *add_req, const char*msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1275 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1276 yahoo_buddy_add_deny_cb(add_req, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1277 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1278
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1279 static void
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1280 yahoo_buddy_add_deny_reason_cb(gpointer data) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1281 struct yahoo_add_request *add_req = data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1282 purple_request_input(add_req->gc, NULL, _("Authorization denied message:"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1283 NULL, _("No reason given."), TRUE, FALSE, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1284 _("OK"), G_CALLBACK(yahoo_buddy_add_deny_cb),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1285 _("Cancel"), G_CALLBACK(yahoo_buddy_add_deny_noreason_cb),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1286 purple_connection_get_account(add_req->gc), add_req->who, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1287 add_req);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1288 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1289
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1290 static void yahoo_buddy_denied_our_add(PurpleConnection *gc, const char *who, const char *reason)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1291 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1292 char *notify_msg;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
1293 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1294
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1295 if (who == NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1296 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1297
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1298 if (reason != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1299 char *msg2 = yahoo_string_decode(gc, reason, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1300 notify_msg = g_strdup_printf(_("%s has (retroactively) denied your request to add them to your list for the following reason: %s."), who, msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1301 g_free(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1302 } else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1303 notify_msg = g_strdup_printf(_("%s has (retroactively) denied your request to add them to your list."), who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1304
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1305 purple_notify_info(gc, NULL, _("Add buddy rejected"), notify_msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1306 g_free(notify_msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1307
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1308 g_hash_table_remove(yd->friends, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1309 purple_prpl_got_user_status(purple_connection_get_account(gc), who, "offline", NULL); /* FIXME: make this set not on list status instead */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1310 /* TODO: Shouldn't we remove the buddy from our local list? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1311 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1312
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1313 static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *pkt) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1314 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1315 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1316 const char *msg = NULL;
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
1317
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1318 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1319
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1320 /* Buddy authorized/declined our addition */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1321 if (pkt->status == 1) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1322 char *temp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1323 char *who = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1324 int response = 0;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1325 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1326
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1327 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1328 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1329
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1330 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1331 case 4:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1332 temp = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1333 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1334 case 13:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1335 response = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1336 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1337 case 14:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1338 msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1339 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1340 case 241:
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1341 fed = strtol(pair->value, NULL, 10);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1342 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1343 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1344 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1345 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1346
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1347 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1348 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1349 who = g_strconcat("msn/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1350 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1351 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1352 who = g_strconcat("ocs/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1353 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1354 case YAHOO_FEDERATION_IBM:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1355 who = g_strconcat("ibm/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1356 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1357 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1358 default:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1359 who = g_strdup(temp);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1360 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1361 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1362
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1363 if (response == 1) /* Authorized */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1364 purple_debug_info("yahoo", "Received authorization from buddy '%s'.\n", who ? who : "(Unknown Buddy)");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1365 else if (response == 2) { /* Declined */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1366 purple_debug_info("yahoo", "Received authorization decline from buddy '%s'.\n", who ? who : "(Unknown Buddy)");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1367 yahoo_buddy_denied_our_add(gc, who, msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1368 } else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1369 purple_debug_error("yahoo", "Received unknown authorization response of %d from buddy '%s'.\n", response, who ? who : "(Unknown Buddy)");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1370 g_free(who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1371 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1372 /* Buddy requested authorization to add us. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1373 else if (pkt->status == 3) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1374 struct yahoo_add_request *add_req;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1375 const char *firstname = NULL, *lastname = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1376 char *temp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1377
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1378 add_req = g_new0(struct yahoo_add_request, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1379 add_req->gc = gc;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1380 add_req->fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1381
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1382 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1383 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1384
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1385 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1386 case 4:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1387 temp = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1388 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1389 case 5:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1390 add_req->id = g_strdup(pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1391 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1392 case 14:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1393 msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1394 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1395 case 216:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1396 firstname = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1397 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1398 case 241:
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1399 add_req->fed = strtol(pair->value, NULL, 10);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1400 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1401 case 254:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1402 lastname = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1403 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1404
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1405 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1406 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1407 }
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1408 switch (add_req->fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1409 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1410 add_req->who = g_strconcat("msn/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1411 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1412 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1413 add_req->who = g_strconcat("ocs/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1414 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1415 case YAHOO_FEDERATION_IBM:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1416 add_req->who = g_strconcat("ibm/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1417 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1418 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1419 default:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1420 add_req->who = g_strdup(temp);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1421 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
1422 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1423
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1424 if (add_req->id && add_req->who) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1425 char *alias = NULL, *dec_msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1426
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1427 if (!purple_privacy_check(account, add_req->who))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1428 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1429 purple_debug_misc("yahoo", "Auth. request from %s dropped and automatically denied due to privacy settings!\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1430 add_req->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1431 yahoo_buddy_add_deny_cb(add_req, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1432 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1433 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1434
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1435 if (msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1436 dec_msg = yahoo_string_decode(gc, msg, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1437
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1438 if (firstname && lastname)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1439 alias = g_strdup_printf("%s %s", firstname, lastname);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1440 else if (firstname)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1441 alias = g_strdup(firstname);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1442 else if (lastname)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1443 alias = g_strdup(lastname);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1444
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1445 /* DONE! this is almost exactly the same as what MSN does,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1446 * this should probably be moved to the core.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1447 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1448 purple_account_request_authorization(account, add_req->who, add_req->id,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1449 alias, dec_msg,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1450 purple_find_buddy(account, add_req->who) != NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1451 yahoo_buddy_add_authorize_cb,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1452 yahoo_buddy_add_deny_reason_cb,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1453 add_req);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1454 g_free(alias);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1455 g_free(dec_msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1456 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1457 g_free(add_req->id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1458 g_free(add_req->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1459 g_free(add_req);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1460 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1461 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1462 purple_debug_error("yahoo", "Received authorization of unknown status (%d).\n", pkt->status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1463 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1464 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1465
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1466 /* I don't think this happens anymore in Version 15 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1467 static void yahoo_buddy_added_us(PurpleConnection *gc, struct yahoo_packet *pkt) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1468 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1469 struct yahoo_add_request *add_req;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1470 char *msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1471 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1472
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1473 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1474
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1475 add_req = g_new0(struct yahoo_add_request, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1476 add_req->gc = gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1477
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1478 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1479 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1480
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1481 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1482 case 1:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1483 add_req->id = g_strdup(pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1484 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1485 case 3:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1486 add_req->who = g_strdup(pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1487 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1488 case 15: /* time, for when they add us and we're offline */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1489 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1490 case 14:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1491 msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1492 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1493 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1494 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1495 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1496
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1497 if (add_req->id && add_req->who) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1498 char *dec_msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1499
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1500 if (!purple_privacy_check(account, add_req->who)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1501 purple_debug_misc("yahoo", "Auth. request from %s dropped and automatically denied due to privacy settings!\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1502 add_req->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1503 yahoo_buddy_add_deny_cb(add_req, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1504 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1505 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1506
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1507 if (msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1508 dec_msg = yahoo_string_decode(gc, msg, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1509
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1510 /* DONE! this is almost exactly the same as what MSN does,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1511 * this should probably be moved to the core.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1512 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1513 purple_account_request_authorization(account, add_req->who, add_req->id,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1514 NULL, dec_msg,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1515 purple_find_buddy(account,add_req->who) != NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1516 yahoo_buddy_add_authorize_cb,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1517 yahoo_buddy_add_deny_reason_cb, add_req);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1518 g_free(dec_msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1519 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1520 g_free(add_req->id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1521 g_free(add_req->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1522 g_free(add_req);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1523 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1524 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1525
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1526 /* I have no idea if this every gets called in version 15 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1527 static void yahoo_buddy_denied_our_add_old(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1528 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1529 char *who = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1530 char *msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1531 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1532
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1533 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1534 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1535
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1536 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1537 case 3:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1538 who = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1539 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1540 case 14:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1541 msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1542 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1543 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1544 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1545 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1546
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1547 yahoo_buddy_denied_our_add(gc, who, msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1548 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1549
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1550 static void yahoo_process_contact(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1551 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1552 switch (pkt->status) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1553 case 1:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1554 yahoo_process_status(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1555 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1556 case 3:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1557 yahoo_buddy_added_us(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1558 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1559 case 7:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1560 yahoo_buddy_denied_our_add_old(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1561 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1562 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1563 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1564 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1565 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1566
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1567 #define OUT_CHARSET "utf-8"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1568
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1569 static char *yahoo_decode(const char *text)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1570 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1571 char *converted = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1572 char *n, *new;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1573 const char *end, *p;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1574 int i, k;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1575
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1576 n = new = g_malloc(strlen (text) + 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1577 end = text + strlen(text);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1578
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1579 for (p = text; p < end; p++, n++) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1580 if (*p == '\\') {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1581 if (p[1] >= '0' && p[1] <= '7') {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1582 p += 1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1583 for (i = 0, k = 0; k < 3; k += 1) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1584 char c = p[k];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1585 if (c < '0' || c > '7') break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1586 i *= 8;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1587 i += c - '0';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1588 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1589 *n = i;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1590 p += k - 1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1591 } else { /* bug 959248 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1592 /* If we see a \ not followed by an octal number,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1593 * it means that it is actually a \\ with one \
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1594 * already eaten by some unknown function.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1595 * This is arguably broken.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1596 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1597 * I think wing is wrong here, there is no function
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1598 * called that I see that could have done it. I guess
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1599 * it is just really sending single \'s. That's yahoo
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1600 * for you.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1601 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1602 *n = *p;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1603 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1604 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1605 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1606 *n = *p;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1607 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1608
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1609 *n = '\0';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1610
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1611 if (strstr(text, "\033$B"))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1612 converted = g_convert(new, n - new, OUT_CHARSET, "iso-2022-jp", NULL, NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1613 if (!converted)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1614 converted = g_convert(new, n - new, OUT_CHARSET, "iso-8859-1", NULL, NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1615 g_free(new);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1616
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1617 return converted;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1618 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1619
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1620 static void yahoo_process_mail(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1621 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1622 PurpleAccount *account = purple_connection_get_account(gc);
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
1623 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1624 const char *who = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1625 const char *email = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1626 const char *subj = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1627 const char *yahoo_mail_url = (yd->jp? YAHOOJP_MAIL_URL: YAHOO_MAIL_URL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1628 int count = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1629 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1630
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1631 if (!purple_account_get_check_mail(account))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1632 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1633
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1634 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1635 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1636 if (pair->key == 9)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1637 count = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1638 else if (pair->key == 43)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1639 who = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1640 else if (pair->key == 42)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1641 email = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1642 else if (pair->key == 18)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1643 subj = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1644 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1645 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1646
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1647 if (who && subj && email && *email) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1648 char *dec_who = yahoo_decode(who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1649 char *dec_subj = yahoo_decode(subj);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1650 char *from = g_strdup_printf("%s (%s)", dec_who, email);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1651
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1652 purple_notify_email(gc, dec_subj, from, purple_account_get_username(account),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1653 yahoo_mail_url, NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1654
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1655 g_free(dec_who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1656 g_free(dec_subj);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1657 g_free(from);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1658 } else if (count > 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1659 const char *tos[2] = { purple_account_get_username(account) };
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1660 const char *urls[2] = { yahoo_mail_url };
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1661
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1662 purple_notify_emails(gc, count, FALSE, NULL, NULL, tos, urls,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1663 NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1664 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1665 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1666
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1667 /* We use this structure once while we authenticate */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1668 struct yahoo_auth_data
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1669 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1670 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1671 char *seed;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1672 };
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1673
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1674 /* This is the y64 alphabet... it's like base64, but has a . and a _ */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1675 static const char base64digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._";
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1676
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1677 /* This is taken from Sylpheed by Hiroyuki Yamamoto. We have our own tobase64 function
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1678 * in util.c, but it is different from the one yahoo uses */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1679 static void to_y64(char *out, const unsigned char *in, gsize inlen)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1680 /* raw bytes in quasi-big-endian order to base 64 string (NUL-terminated) */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1681 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1682 for (; inlen >= 3; inlen -= 3)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1683 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1684 *out++ = base64digits[in[0] >> 2];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1685 *out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1686 *out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1687 *out++ = base64digits[in[2] & 0x3f];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1688 in += 3;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1689 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1690 if (inlen > 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1691 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1692 unsigned char fragment;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1693
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1694 *out++ = base64digits[in[0] >> 2];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1695 fragment = (in[0] << 4) & 0x30;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1696 if (inlen > 1)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1697 fragment |= in[1] >> 4;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1698 *out++ = base64digits[fragment];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1699 *out++ = (inlen < 2) ? '-' : base64digits[(in[1] << 2) & 0x3c];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1700 *out++ = '-';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1701 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1702 *out = '\0';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1703 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1704
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1705 static void yahoo_auth16_stage3(PurpleConnection *gc, const char *crypt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1706 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
1707 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1708 PurpleAccount *account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1709 const char *name = purple_normalize(account, purple_account_get_username(account));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1710 PurpleCipher *md5_cipher;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1711 PurpleCipherContext *md5_ctx;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1712 guchar md5_digest[16];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1713 gchar base64_string[25];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1714 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1715
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1716 purple_debug_info("yahoo","Authentication: In yahoo_auth16_stage3\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1717
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1718 md5_cipher = purple_ciphers_find_cipher("md5");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1719 md5_ctx = purple_cipher_context_new(md5_cipher, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1720 purple_cipher_context_append(md5_ctx, (guchar *)crypt, strlen(crypt));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1721 purple_cipher_context_digest(md5_ctx, sizeof(md5_digest), md5_digest, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1722
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1723 to_y64(base64_string, md5_digest, 16);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1724
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1725 purple_debug_info("yahoo", "yahoo status: %d\n", yd->current_status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1726 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP, yd->current_status, yd->session_id);
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
1727
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1728 if(yd->cookie_b) { /* send B cookie if we have it */
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1729 yahoo_packet_hash(pkt, "ssssssssss",
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1730 1, name,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1731 0, name,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1732 277, yd->cookie_y,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1733 278, yd->cookie_t,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1734 307, base64_string,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1735 244, yd->jp ? YAHOOJP_CLIENT_VERSION_ID : YAHOO_CLIENT_VERSION_ID,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1736 2, name,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1737 2, "1",
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1738 59, yd->cookie_b,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1739 98, purple_account_get_string(account, "room_list_locale", yd->jp ? "jp" : "us"),
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1740 135, yd->jp ? YAHOOJP_CLIENT_VERSION : YAHOO_CLIENT_VERSION);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1741 } else { /* don't try to send an empty B cookie - the server will be mad */
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1742 yahoo_packet_hash(pkt, "sssssssss",
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1743 1, name,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1744 0, name,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1745 277, yd->cookie_y,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1746 278, yd->cookie_t,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1747 307, base64_string,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1748 244, yd->jp ? YAHOOJP_CLIENT_VERSION_ID : YAHOO_CLIENT_VERSION_ID,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1749 2, name,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1750 2, "1",
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1751 98, purple_account_get_string(account, "room_list_locale", yd->jp ? "jp" : "us"),
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1752 135, yd->jp ? YAHOOJP_CLIENT_VERSION : YAHOO_CLIENT_VERSION);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1753 }
27672
4bd3f7d841e3 Clean up a case of unnecessarily duplicated code.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27671
diff changeset
1754
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1755 if (yd->picture_checksum)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1756 yahoo_packet_hash_int(pkt, 192, yd->picture_checksum);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1757 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1758
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1759 purple_cipher_context_destroy(md5_ctx);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1760 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1761
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1762 static gchar *yahoo_auth16_get_cookie_b(gchar *headers)
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1763 {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1764 gchar **splits = g_strsplit(headers, "\r\n", -1);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1765 gchar *tmp = NULL, *tmp2 = NULL, *sem = NULL;
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1766 int elements = g_strv_length(splits), i;
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1767
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1768 if(elements > 1) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1769 for(i = 0; i < elements; i++) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1770 if(g_ascii_strncasecmp(splits[i], "Set-Cookie: B=", 14) == 0) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1771 tmp = &splits[i][14];
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1772 sem = strchr(tmp, ';');
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1773
30109
ccaaee2a8e59 Fix a typo and a memleak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30108
diff changeset
1774 if (sem != NULL) {
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1775 tmp2 = g_strndup(tmp, sem - tmp);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1776 purple_debug_info("yahoo", "Got needed part of B cookie: %s\n",
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1777 tmp2 ? tmp2 : "(null)");
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1778 break;
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1779 }
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1780 }
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1781 }
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1782 }
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1783
30109
ccaaee2a8e59 Fix a typo and a memleak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30108
diff changeset
1784 g_strfreev(splits);
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1785 return tmp2;
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1786 }
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1787
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
1788 static void yahoo_auth16_stage2(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *ret_data, size_t len, const gchar *error_message)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1789 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1790 struct yahoo_auth_data *auth_data = user_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1791 PurpleConnection *gc = auth_data->gc;
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
1792 YahooData *yd = purple_connection_get_protocol_data(gc);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1793 gboolean try_login_on_error = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1794
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1795 purple_debug_info("yahoo","Authentication: In yahoo_auth16_stage2\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1796
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
1797 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
1798
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1799 if (error_message != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1800 purple_debug_error("yahoo", "Login Failed, unable to retrieve stage 2 url: %s\n", error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1801 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1802 g_free(auth_data->seed);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1803 g_free(auth_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1804 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1805 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1806 else if (len > 0 && ret_data && *ret_data) {
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1807 gchar **splits = g_strsplit(ret_data, "\r\n\r\n", -1), **split_data = NULL;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1808 int totalelements = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1809 int response_no = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1810 char *crumb = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1811 char *crypt = NULL;
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
1812
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1813 if(g_strv_length(splits) > 1) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1814 yd->cookie_b = yahoo_auth16_get_cookie_b(splits[0]);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1815 split_data = g_strsplit(splits[1], "\r\n", -1);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1816 totalelements = g_strv_length(split_data);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1817 }
29476
39716f7d2c93 Kill off unneeded GLIB_CHECK_VERSION checks in libpurple. Refs #10024.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28394
diff changeset
1818
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1819 if (totalelements >= 4) {
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1820 int i;
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1821
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1822 for(i = 0; i < totalelements; i++) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1823 /* I'm not exactly a fan of the magic numbers, but it's obvious,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1824 * so no sense in wasting a bajillion vars or calls to strlen */
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1825
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1826 if(g_ascii_isdigit(split_data[i][0])) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1827 /* if the current line and the next line both start with numbers,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1828 * the current line is the length of the body, so skip. If not,
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1829 * then the current line is the response code from the login process. */
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1830 if(!g_ascii_isdigit(split_data[i + 1][0])) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1831 response_no = strtol(split_data[i], NULL, 10);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1832 purple_debug_info("yahoo", "Got auth16 stage 2 response code: %d\n",
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1833 response_no);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1834 }
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1835 } else if(strncmp(split_data[i], "crumb=", 6) == 0) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1836 crumb = g_strdup(&split_data[i][6]);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1837
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1838 if(purple_debug_is_unsafe())
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1839 purple_debug_info("yahoo", "Got crumb: %s\n", crumb);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1840
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1841 } else if(strncmp(split_data[i], "Y=", 2) == 0) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1842 yd->cookie_y = g_strdup(&split_data[i][2]);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1843
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1844 if(purple_debug_is_unsafe())
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1845 purple_debug_info("yahoo", "Got Y cookie: %s\n", yd->cookie_y);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1846
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1847 } else if(strncmp(split_data[i], "T=", 2) == 0) {
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1848 yd->cookie_t = g_strdup(&split_data[i][2]);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1849
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1850 if(purple_debug_is_unsafe())
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1851 purple_debug_info("yahoo", "Got T cookie: %s\n", yd->cookie_t);
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1852 }
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1853 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1854 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1855
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
1856 g_strfreev(splits);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1857 g_strfreev(split_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1858
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1859 if(response_no != 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1860 /* Some error in the login process */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1861 PurpleConnectionError error;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1862 char *error_reason = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1863
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1864 switch(response_no) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1865 case -1:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1866 /* Some error in the received stream */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1867 error_reason = g_strdup(_("Received invalid data"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1868 error = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1869 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1870 case 100:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1871 /* Unknown error */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1872 error_reason = g_strdup(_("Unknown error"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1873 error = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1874 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1875 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1876 /* if we have everything we need, why not try to login irrespective of response */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1877 if((crumb != NULL) && (yd->cookie_y != NULL) && (yd->cookie_t != NULL)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1878 try_login_on_error = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1879 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1880 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1881 error_reason = g_strdup(_("Unknown error"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1882 error = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1883 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1884 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1885 if(error_reason) {
27591
f92d37b363c6 yahoo: Add the error code to the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 27531
diff changeset
1886 purple_debug_error("yahoo", "Authentication error: %s. "
f92d37b363c6 yahoo: Add the error code to the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 27531
diff changeset
1887 "Code %d\n", error_reason, response_no);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1888 purple_connection_error_reason(gc, error, error_reason);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1889 g_free(error_reason);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1890 g_free(auth_data->seed);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1891 g_free(auth_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1892 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1893 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1894 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1895
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1896 crypt = g_strconcat(crumb, auth_data->seed, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1897 yahoo_auth16_stage3(gc, crypt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1898 g_free(crypt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1899 g_free(crumb);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1900 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1901 g_free(auth_data->seed);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1902 g_free(auth_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1903 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1904
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
1905 static void yahoo_auth16_stage1_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *ret_data, size_t len, const gchar *error_message)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1906 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1907 struct yahoo_auth_data *auth_data = user_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1908 PurpleConnection *gc = auth_data->gc;
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
1909 YahooData *yd = purple_connection_get_protocol_data(gc);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1910
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1911 purple_debug_info("yahoo","Authentication: In yahoo_auth16_stage1_cb\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1912
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
1913 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1914
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1915 if (error_message != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1916 purple_debug_error("yahoo", "Login Failed, unable to retrieve login url: %s\n", error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1917 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1918 g_free(auth_data->seed);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1919 g_free(auth_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1920 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1921 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1922 else if (len > 0 && ret_data && *ret_data) {
29988
78f972c7de0e Document the code I just touched, and use a convenience variable in a couple
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29987
diff changeset
1923 PurpleAccount *account = purple_connection_get_account(gc);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1924 gchar **split_data = g_strsplit(ret_data, "\r\n", -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1925 int totalelements = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1926 int response_no = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1927 char *token = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1928
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1929 totalelements = g_strv_length(split_data);
29476
39716f7d2c93 Kill off unneeded GLIB_CHECK_VERSION checks in libpurple. Refs #10024.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28394
diff changeset
1930
29988
78f972c7de0e Document the code I just touched, and use a convenience variable in a couple
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29987
diff changeset
1931 if(totalelements == 1) { /* Received an error code */
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1932 response_no = strtol(split_data[0], NULL, 10);
29988
78f972c7de0e Document the code I just touched, and use a convenience variable in a couple
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29987
diff changeset
1933 } else if(totalelements == 2 || totalelements == 3 ) { /* received valid data */
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1934 response_no = strtol(split_data[0], NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1935 token = g_strdup(split_data[1] + strlen("ymsgr="));
29988
78f972c7de0e Document the code I just touched, and use a convenience variable in a couple
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29987
diff changeset
1936 } else { /* It looks like a transparent proxy has returned a document we don't want */
29987
ff8e865bf524 Attempt to handle transparent proxies that return documents instead of errors.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29750
diff changeset
1937 response_no = -1;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1938 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1939
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1940 g_strfreev(split_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1941
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1942 if(response_no != 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1943 /* Some error in the login process */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1944 PurpleConnectionError error;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1945 char *error_reason;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1946
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1947 switch(response_no) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1948 case -1:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1949 /* Some error in the received stream */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1950 error_reason = g_strdup(_("Received invalid data"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1951 error = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1952 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1953 case 1212:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1954 /* Password incorrect */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1955 /* Set password to NULL. Avoids account locking. Brings dialog to enter password if clicked on Re-enable account */
29988
78f972c7de0e Document the code I just touched, and use a convenience variable in a couple
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29987
diff changeset
1956 if (!purple_account_get_remember_password(account))
78f972c7de0e Document the code I just touched, and use a convenience variable in a couple
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29987
diff changeset
1957 purple_account_set_password(account, NULL);
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
1958 error_reason = g_strdup(_("Incorrect password"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1959 error = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1960 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1961 case 1213:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1962 /* security lock from too many failed login attempts */
30081
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1963 error_reason = g_strdup(_("Account locked: Too many failed login "
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1964 "attempts. Logging into the Yahoo! website may fix this."));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1965 error = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1966 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1967 case 1235:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1968 /* the username does not exist */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1969 error_reason = g_strdup(_("Username does not exist"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1970 error = PURPLE_CONNECTION_ERROR_INVALID_USERNAME;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1971 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1972 case 1214:
30081
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1973 /* indicates a lock of some description */
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1974 error_reason = g_strdup(_("Account locked: Unknown reason. Logging "
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1975 "into the Yahoo! website may fix this."));
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1976 error = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1977 break;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1978 case 1236:
30081
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1979 /* indicates a lock due to logging in too frequently */
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1980 error_reason = g_strdup(_("Account locked: You have been logging in too "
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1981 "frequently. Wait a few minutes before trying to connect "
6d18b6221c5e Clarify an error condition I was able to duplicate reliably last night.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30078
diff changeset
1982 "again. Logging into the Yahoo! website may help."));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1983 error = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1984 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1985 case 100:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1986 /* username or password missing */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1987 error_reason = g_strdup(_("Username or password missing"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1988 error = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1989 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1990 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1991 /* Unknown error! */
27566
bd8b78d9573c Don't break string freeze.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27560
diff changeset
1992 error_reason = g_strdup_printf(_("Unknown error (%d)"), response_no);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1993 error = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1994 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1995 }
27591
f92d37b363c6 yahoo: Add the error code to the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 27531
diff changeset
1996 purple_debug_error("yahoo", "Authentication error: %s. Code %d\n",
f92d37b363c6 yahoo: Add the error code to the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 27531
diff changeset
1997 error_reason, response_no);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1998 purple_connection_error_reason(gc, error, error_reason);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1999 g_free(error_reason);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2000 g_free(auth_data->seed);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2001 g_free(auth_data);
28137
da33da2e1a1e Fix a bunch of memory leaks reported by Josh Mueller. Refs #9822.
Paul Aurich <paul@darkrain42.org>
parents: 28122
diff changeset
2002 g_free(token);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2003 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2004 else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2005 /* OK to login, correct information provided */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2006 PurpleUtilFetchUrlData *url_data = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2007 char *url = NULL;
27401
430eb9e9042a Correctly determine if the prpl calling a given function is the Yahoo! JAPAN
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27400
diff changeset
2008 gboolean yahoojp = yahoo_is_japan(account);
28394
74958cad186d Add a boolean account option (defaulting to off) to control whether to use
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28349
diff changeset
2009 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2010
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2011 url = g_strdup_printf(yahoojp ? YAHOOJP_LOGIN_URL : YAHOO_LOGIN_URL, token);
28394
74958cad186d Add a boolean account option (defaulting to off) to control whether to use
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28349
diff changeset
2012 url_data = purple_util_fetch_url_request_len_with_account(
74958cad186d Add a boolean account option (defaulting to off) to control whether to use
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28349
diff changeset
2013 proxy_ssl ? account : NULL, url, TRUE, YAHOO_CLIENT_USERAGENT,
30098
9f482e11f066 Rework the Yahoo auth16 sutff a bit such that we now retrieve and use the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30097
diff changeset
2014 TRUE, NULL, TRUE, -1, yahoo_auth16_stage2, auth_data);
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
2015 if (url_data)
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
2016 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2017 g_free(url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2018 g_free(token);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2019 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2020 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2021 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2022
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2023 static void yahoo_auth16_stage1(PurpleConnection *gc, const char *seed)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2024 {
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
2025 YahooData *yd = purple_connection_get_protocol_data(gc);
28394
74958cad186d Add a boolean account option (defaulting to off) to control whether to use
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28349
diff changeset
2026 PurpleAccount *account = purple_connection_get_account(gc);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2027 PurpleUtilFetchUrlData *url_data = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2028 struct yahoo_auth_data *auth_data = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2029 char *url = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2030 char *encoded_username;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2031 char *encoded_password;
28394
74958cad186d Add a boolean account option (defaulting to off) to control whether to use
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28349
diff changeset
2032 gboolean yahoojp = yahoo_is_japan(account);
74958cad186d Add a boolean account option (defaulting to off) to control whether to use
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28349
diff changeset
2033 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2034
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2035 purple_debug_info("yahoo", "Authentication: In yahoo_auth16_stage1\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2036
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2037 if(!purple_ssl_is_supported()) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2038 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, _("SSL support unavailable"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2039 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2040 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2041
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2042 auth_data = g_new0(struct yahoo_auth_data, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2043 auth_data->gc = gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2044 auth_data->seed = g_strdup(seed);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2045
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2046 encoded_username = g_strdup(purple_url_encode(purple_account_get_username(purple_connection_get_account(gc))));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2047 encoded_password = g_strdup(purple_url_encode(purple_connection_get_password(gc)));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2048 url = g_strdup_printf(yahoojp ? YAHOOJP_TOKEN_URL : YAHOO_TOKEN_URL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2049 encoded_username, encoded_password, purple_url_encode(seed));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2050 g_free(encoded_password);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2051 g_free(encoded_username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2052
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2053 url_data = purple_util_fetch_url_request_len_with_account(
28394
74958cad186d Add a boolean account option (defaulting to off) to control whether to use
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28349
diff changeset
2054 proxy_ssl ? account : NULL, url, TRUE,
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2055 YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2056 yahoo_auth16_stage1_cb, auth_data);
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
2057 if (url_data)
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
2058 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2059
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2060 g_free(url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2061 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2062
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2063 static void yahoo_process_auth(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2064 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2065 char *seed = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2066 char *sn = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2067 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2068 int m = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2069 gchar *buf;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2070
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2071 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2072 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2073 if (pair->key == 94)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2074 seed = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2075 if (pair->key == 1)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2076 sn = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2077 if (pair->key == 13)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2078 m = atoi(pair->value);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2079 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2080 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2081
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2082 if (seed) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2083 switch (m) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2084 case 0:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2085 /* used to be for really old auth routine, dont support now */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2086 case 1:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2087 case 2: /* Yahoo ver 16 authentication */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2088 yahoo_auth16_stage1(gc, seed);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2089 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2090 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2091 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2092 GHashTable *ui_info = purple_core_get_ui_info();
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2093
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2094 buf = g_strdup_printf(_("The Yahoo server has requested the use of an unrecognized "
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2095 "authentication method. You will probably not be able "
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2096 "to successfully sign on to Yahoo. Check %s for updates."),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2097 ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2098 purple_notify_error(gc, "", _("Failed Yahoo! Authentication"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2099 buf);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2100 g_free(buf);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2101 yahoo_auth16_stage1(gc, seed); /* Can't hurt to try it anyway. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2102 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2103 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2104 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2105 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2106 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2107
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2108 static void ignore_buddy(PurpleBuddy *buddy) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2109 PurpleGroup *group;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2110 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2111 gchar *name;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2112
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2113 if (!buddy)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2114 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2115
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2116 group = purple_buddy_get_group(buddy);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2117 name = g_strdup(purple_buddy_get_name(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2118 account = purple_buddy_get_account(buddy);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2119
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2120 purple_debug_info("yahoo", "blist: Removing '%s' from buddy list.\n", name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2121 purple_account_remove_buddy(account, buddy, group);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2122 purple_blist_remove_buddy(buddy);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2123
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2124 serv_add_deny(purple_account_get_connection(account), name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2125
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2126 g_free(name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2127 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2128
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2129 static void keep_buddy(PurpleBuddy *b)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2130 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2131 purple_privacy_deny_remove(purple_buddy_get_account(b),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2132 purple_buddy_get_name(b), 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2133 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2134
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2135 static void yahoo_process_ignore(PurpleConnection *gc, struct yahoo_packet *pkt) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2136 PurpleBuddy *b;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2137 GSList *l;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2138 gchar *who = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2139 gchar *me = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2140 gchar buf[BUF_LONG];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2141 gboolean ignore = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2142 gint status = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2143
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2144 for (l = pkt->hash; l; l = l->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2145 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2146 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2147 case 0:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2148 who = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2149 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2150 case 1:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2151 me = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2152 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2153 case 13:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2154 /* 1 == ignore, 2 == unignore */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2155 ignore = (strtol(pair->value, NULL, 10) == 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2156 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2157 case 66:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2158 status = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2159 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2160 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2161 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2162 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2163 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2164
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2165 /*
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2166 * status
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2167 * 0 - ok
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2168 * 2 - already in ignore list, could not add
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2169 * 3 - not in ignore list, could not delete
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2170 * 12 - is a buddy, could not add (and possibly also a not-in-ignore list condition?)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2171 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2172 switch (status) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2173 case 12:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2174 purple_debug_info("yahoo", "Server reported \"is a buddy\" for %s while %s",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2175 who, (ignore ? "ignoring" : "unignoring"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2176
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2177 if (ignore) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2178 b = purple_find_buddy(gc->account, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2179 g_snprintf(buf, sizeof(buf), _("You have tried to ignore %s, but the "
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2180 "user is on your buddy list. Clicking \"Yes\" "
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2181 "will remove and ignore the buddy."), who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2182 purple_request_yes_no(gc, NULL, _("Ignore buddy?"), buf, 0,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2183 gc->account, who, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2184 b,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2185 G_CALLBACK(ignore_buddy),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2186 G_CALLBACK(keep_buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2187 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2188 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2189 case 2:
28620
3d5f1cde625a These debug messages were missing newlines at the end.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28603
diff changeset
2190 purple_debug_info("yahoo", "Server reported that %s is already in the ignore list.\n",
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2191 who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2192 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2193 case 3:
28620
3d5f1cde625a These debug messages were missing newlines at the end.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28603
diff changeset
2194 purple_debug_info("yahoo", "Server reported that %s is not in the ignore list; could not delete\n",
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2195 who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2196 case 0:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2197 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2198 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2199 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2200 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2201
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2202 static void yahoo_process_authresp(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2203 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2204 #ifdef TRY_WEBMESSENGER_LOGIN
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2205 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2206 #endif /* TRY_WEBMESSENGER_LOGIN */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2207 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2208 int err = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2209 char *msg;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2210 char *url = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2211 char *fullmsg;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2212 PurpleAccount *account = gc->account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2213 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2214
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2215 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2216 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2217
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2218 if (pair->key == 66)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2219 err = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2220 else if (pair->key == 20)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2221 url = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2222
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2223 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2224 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2225
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2226 switch (err) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2227 case 0:
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
2228 msg = g_strdup(_("Unknown error"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2229 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2230 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2231 case 3:
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
2232 msg = g_strdup(_("Username does not exist"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2233 reason = PURPLE_CONNECTION_ERROR_INVALID_USERNAME;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2234 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2235 case 13:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2236 #ifdef TRY_WEBMESSENGER_LOGIN
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2237 if (!yd->wm) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2238 PurpleUtilFetchUrlData *url_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2239 yd->wm = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2240 if (yd->fd >= 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2241 close(yd->fd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2242 if (gc->inpa)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2243 purple_input_remove(gc->inpa);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2244 url_data = purple_util_fetch_url(WEBMESSENGER_URL, TRUE,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2245 "Purple/" VERSION, FALSE, yahoo_login_page_cb, gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2246 if (url_data != NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2247 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2248 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2249 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2250 #endif /* TRY_WEBMESSENGER_LOGIN */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2251 if (!purple_account_get_remember_password(account))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2252 purple_account_set_password(account, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2253
28314
975e213733e8 Change some strings in Yahoo! for 2.6.1.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27679
diff changeset
2254 msg = g_strdup(_("Invalid username or password"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2255 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2256 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2257 case 14:
28314
975e213733e8 Change some strings in Yahoo! for 2.6.1.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27679
diff changeset
2258 msg = g_strdup(_("Your account has been locked due to too many failed login attempts."
28315
248e47560a4a Whitespace after '.' in a string.
Paul Aurich <paul@darkrain42.org>
parents: 28314
diff changeset
2259 " Please try logging into the Yahoo! website."));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2260 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2261 break;
28120
931bb24c28ab Fix #9660. Reconnect, in case of error 52.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28083
diff changeset
2262 case 52:
931bb24c28ab Fix #9660. Reconnect, in case of error 52.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28083
diff changeset
2263 /* See #9660. As much as we know, reconnecting shouldn't hurt */
28121
c499a1e8ceff Unbreak the string freeze.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28120
diff changeset
2264 purple_debug_info("yahoo", "Got error 52, Set to autoreconnect\n");
28326
0ab7b436a563 Better string for Yahoo error 52. Someone might want to try improving it still.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28325
diff changeset
2265 msg = g_strdup_printf(_("Unknown error 52. Reconnecting should fix this."));
28122
b6a9e2079d50 Use PURPLE_CONNECTION_ERROR_NETWORK_ERROR as the connection error
Stu Tomlinson <stu@nosnilmot.com>
parents: 28121
diff changeset
2266 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
28120
931bb24c28ab Fix #9660. Reconnect, in case of error 52.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28083
diff changeset
2267 break;
27671
d53d082f1641 Display an error message when we receive error code 1013 from the Yahoo! logon
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27624
diff changeset
2268 case 1013:
28314
975e213733e8 Change some strings in Yahoo! for 2.6.1.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27679
diff changeset
2269 msg = g_strdup(_("Error 1013: The username you have entered is invalid."
28464
b8b90d4cf2f5 We generally don't hyphenate "email"
Mark Doliner <mark@kingant.net>
parents: 28439
diff changeset
2270 " The most common cause of this error is entering your email"
28314
975e213733e8 Change some strings in Yahoo! for 2.6.1.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27679
diff changeset
2271 " address instead of your Yahoo! ID."));
27671
d53d082f1641 Display an error message when we receive error code 1013 from the Yahoo! logon
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27624
diff changeset
2272 reason = PURPLE_CONNECTION_ERROR_INVALID_USERNAME;
d53d082f1641 Display an error message when we receive error code 1013 from the Yahoo! logon
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27624
diff changeset
2273 break;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2274 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2275 msg = g_strdup_printf(_("Unknown error number %d. Logging into the Yahoo! website may fix this."), err);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2276 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2277
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2278 if (url)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2279 fullmsg = g_strdup_printf("%s\n%s", msg, url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2280 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2281 fullmsg = g_strdup(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2282
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2283 purple_connection_error_reason(gc, reason, fullmsg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2284 g_free(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2285 g_free(fullmsg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2286 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2287
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2288 static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2289 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2290 int err = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2291 char *who = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2292 char *temp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2293 char *group = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2294 char *decoded_group;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2295 char *buf;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2296 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2297 GSList *l = pkt->hash;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2298 YahooData *yd = gc->proto_data;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2299 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2300
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2301 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2302 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2303
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2304 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2305 case 66:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2306 err = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2307 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2308 case 7:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2309 temp = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2310 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2311 case 65:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2312 group = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2313 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2314 case 241:
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2315 fed = strtol(pair->value, NULL, 10);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2316 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2317 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2318
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2319 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2320 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2321
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2322 if (!temp)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2323 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2324 if (!group)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2325 group = "";
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2326
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2327 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2328 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2329 who = g_strconcat("msn/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2330 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2331 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2332 who = g_strconcat("ocs/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2333 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2334 case YAHOO_FEDERATION_IBM:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2335 who = g_strconcat("ibm/", temp, NULL);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2336 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2337 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2338 default:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2339 who = g_strdup(temp);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2340 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2341 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2342
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2343 if (!err || (err == 2)) { /* 0 = ok, 2 = already on serv list */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2344 f = yahoo_friend_find_or_new(gc, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2345 yahoo_update_status(gc, who, f);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2346 f->fed = fed;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2347
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2348 if( !g_hash_table_lookup(yd->peers, who) ) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2349 /* we are not connected as client, so set friend to not connected */
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2350 if(fed)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2351 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_DO_NOT_CONNECT);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2352 else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2353 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2354 f->p2p_packet_sent = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2355 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2356 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2357 else /* we are already connected. set friend to YAHOO_P2PSTATUS_WE_ARE_CLIENT */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2358 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_WE_ARE_CLIENT);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2359 g_free(who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2360 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2361 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2362
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2363 decoded_group = yahoo_string_decode(gc, group, FALSE);
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
2364 buf = g_strdup_printf(_("Unable to add buddy %s to group %s to the server list on account %s."),
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2365 who, decoded_group, purple_connection_get_display_name(gc));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2366 if (!purple_conv_present_error(who, purple_connection_get_account(gc), buf))
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
2367 purple_notify_error(gc, NULL, _("Unable to add buddy to server list"), buf);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2368 g_free(buf);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2369 g_free(decoded_group);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2370 g_free(who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2371 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2372
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2373 /* write pkt to the source */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2374 static void yahoo_p2p_write_pkt(gint source, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2375 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2376 size_t pkt_len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2377 guchar *raw_packet;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2378
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2379 /*build the raw packet and send it to the host*/
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2380 pkt_len = yahoo_packet_build(pkt, 0, 0, 0, &raw_packet);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2381 if(write(source, raw_packet, pkt_len) != pkt_len)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2382 purple_debug_warning("yahoo","p2p: couldn't write to the source\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2383 g_free(raw_packet);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2384 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2385
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2386 static void yahoo_p2p_keepalive_cb(gpointer key, gpointer value, gpointer user_data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2387 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2388 struct yahoo_p2p_data *p2p_data = value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2389 PurpleConnection *gc = user_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2390 struct yahoo_packet *pkt_to_send;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2391 PurpleAccount *account;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2392 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2393
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2394 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2395
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2396 pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2397 yahoo_packet_hash(pkt_to_send, "ssisi",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2398 4, purple_normalize(account, purple_account_get_username(account)),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2399 5, p2p_data->host_username,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2400 241, 0, /* Protocol identifier */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2401 49, "PEERTOPEER",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2402 13, 7);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2403 yahoo_p2p_write_pkt(p2p_data->source, pkt_to_send);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2404
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2405 yahoo_packet_free(pkt_to_send);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2406 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2407
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2408 static gboolean yahoo_p2p_keepalive(gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2409 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2410 PurpleConnection *gc = data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2411 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2412
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2413 g_hash_table_foreach(yd->peers, yahoo_p2p_keepalive_cb, gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2414
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2415 return TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2416 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2417
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2418 /* destroy p2p_data associated with a peer and close p2p connection.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2419 * g_hash_table_remove() calls this function to destroy p2p_data associated with the peer,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2420 * call g_hash_table_remove() instead of this fucntion if peer has an entry in the table */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2421 static void yahoo_p2p_disconnect_destroy_data(gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2422 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2423 struct yahoo_p2p_data *p2p_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2424 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2425
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2426 if(!(p2p_data = data))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2427 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2428
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2429 /* If friend, set him not connected */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2430 f = yahoo_friend_find(p2p_data->gc, p2p_data->host_username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2431 if (f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2432 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2433
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2434 if(p2p_data->source >= 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2435 close(p2p_data->source);
27499
d46ab8c52cc4 Fix two errors when my p2p server connection times out.
Paul Aurich <paul@darkrain42.org>
parents: 27464
diff changeset
2436 if (p2p_data->input_event > 0)
d46ab8c52cc4 Fix two errors when my p2p server connection times out.
Paul Aurich <paul@darkrain42.org>
parents: 27464
diff changeset
2437 purple_input_remove(p2p_data->input_event);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2438 g_free(p2p_data->host_ip);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2439 g_free(p2p_data->host_username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2440 g_free(p2p_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2441 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2442
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2443 /* exchange of initial p2pfilexfer packets, service type YAHOO_SERVICE_P2PFILEXFER */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2444 static void yahoo_p2p_process_p2pfilexfer(gpointer data, gint source, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2445 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2446 struct yahoo_p2p_data *p2p_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2447 char *who = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2448 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2449 struct yahoo_packet *pkt_to_send;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2450 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2451 int val_13_to_send = 0;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2452 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2453 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2454
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2455 if(!(p2p_data = data))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2456 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2457
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2458 yd = p2p_data->gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2459
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2460 /* lets see whats in the packet */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2461 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2462 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2463
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2464 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2465 case 4:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2466 who = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2467 if(strncmp(who, p2p_data->host_username, strlen(p2p_data->host_username)) != 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2468 /* from whom are we receiving the packets ?? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2469 purple_debug_warning("yahoo","p2p: received data from wrong user\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2470 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2471 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2472 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2473 case 13:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2474 p2p_data->val_13 = strtol(pair->value, NULL, 10); /* Value should be 5-7 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2475 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2476 /* case 5, 49 look laters, no use right now */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2477 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2478 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2479 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2480
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2481 account = purple_connection_get_account(p2p_data->gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2482
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2483 /* key_13: sort of a counter.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2484 * WHEN WE ARE CLIENT: yahoo server sends val_13 = 0, we send to peer val_13 = 1, receive back val_13 = 5,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2485 * we send val_13=6, receive val_13=7, we send val_13=7, HALT. Keep sending val_13 = 7 as keep alive.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2486 * WHEN WE ARE SERVER: we send val_13 = 0 to yahoo server, peer sends us val_13 = 1, we send val_13 = 5,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2487 * receive val_13 = 6, send val_13 = 7, receive val_13 = 7. HALT. Keep sending val_13 = 7 as keep alive. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2488
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2489 switch(p2p_data->val_13) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2490 case 1 : val_13_to_send = 5; break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2491 case 5 : val_13_to_send = 6; break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2492 case 6 : val_13_to_send = 7; break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2493 case 7 : if( g_hash_table_lookup(yd->peers, p2p_data->host_username) )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2494 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2495 val_13_to_send = 7; break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2496 default: purple_debug_warning("yahoo","p2p:Unknown value for key 13\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2497 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2498 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2499
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2500 /* Build the yahoo packet */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2501 pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2502 yahoo_packet_hash(pkt_to_send, "ssisi",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2503 4, purple_normalize(account, purple_account_get_username(account)),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2504 5, p2p_data->host_username,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2505 241, 0, /* Protocol identifier */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2506 49, "PEERTOPEER",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2507 13, val_13_to_send);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2508
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2509 /* build the raw packet and send it to the host */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2510 yahoo_p2p_write_pkt(source, pkt_to_send);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2511 yahoo_packet_free(pkt_to_send);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2512
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2513 if( val_13_to_send == 7 )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2514 if( !g_hash_table_lookup(yd->peers, p2p_data->host_username) ) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2515 g_hash_table_insert(yd->peers, g_strdup(p2p_data->host_username), p2p_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2516 /* If the peer is a friend, set him connected */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2517 f = yahoo_friend_find(p2p_data->gc, p2p_data->host_username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2518 if (f) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2519 if(p2p_data->connection_type == YAHOO_P2P_WE_ARE_SERVER) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2520 p2p_data->session_id = f->session_id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2521 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_WE_ARE_SERVER);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2522 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2523 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2524 yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_WE_ARE_CLIENT);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2525 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2526 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2527 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2528
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2529 /* callback function associated with receiving of data, not considering receipt of multiple YMSG packets in a single TCP packet */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2530 static void yahoo_p2p_read_pkt_cb(gpointer data, gint source, PurpleInputCondition cond)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2531 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2532 guchar buf[1024]; /* is it safe to assume a fixed array length of 1024 ?? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2533 int len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2534 int pos = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2535 int pktlen;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2536 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2537 guchar *start = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2538 struct yahoo_p2p_data *p2p_data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2539 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2540
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2541 if(!(p2p_data = data))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2542 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2543 yd = p2p_data->gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2544
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2545 len = read(source, buf, sizeof(buf));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2546 if ((len < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK)))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2547 return ; /* No Worries*/
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2548 else if (len <= 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2549 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2550 purple_debug_warning("yahoo","p2p: Error in connection, or host disconnected\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2551 /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2552 if( g_hash_table_lookup(yd->peers, p2p_data->host_username) )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2553 g_hash_table_remove(yd->peers,p2p_data->host_username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2554 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2555 yahoo_p2p_disconnect_destroy_data(data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2556 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2557 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2558
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2559 if(len < YAHOO_PACKET_HDRLEN)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2560 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2561
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2562 if(strncmp((char *)buf, "YMSG", MIN(4, len)) != 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2563 /* Not a YMSG packet */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2564 purple_debug_warning("yahoo","p2p: Got something other than YMSG packet\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2565
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2566 start = memchr(buf + 1, 'Y', len - 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2567 if (start == NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2568 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2569
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2570 g_memmove(buf, start, len - (start - buf));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2571 len -= start - buf;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2572 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2573
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2574 pos += 4; /* YMSG */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2575 pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2576 pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2577
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2578 pktlen = yahoo_get16(buf + pos); pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2579 purple_debug_misc("yahoo", "p2p: %d bytes to read\n", len);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2580
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2581 pkt = yahoo_packet_new(0, 0, 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2582 pkt->service = yahoo_get16(buf + pos); pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2583 pkt->status = yahoo_get32(buf + pos); pos += 4;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2584 pkt->id = yahoo_get32(buf + pos); pos += 4;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2585
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2586 purple_debug_misc("yahoo", "p2p: Yahoo Service: 0x%02x Status: %d\n",pkt->service, pkt->status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2587 yahoo_packet_read(pkt, buf + pos, pktlen);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2588
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2589 /* packet processing */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2590 switch(pkt->service) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2591 case YAHOO_SERVICE_P2PFILEXFER:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2592 yahoo_p2p_process_p2pfilexfer(data, source, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2593 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2594 case YAHOO_SERVICE_MESSAGE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2595 yahoo_process_message(p2p_data->gc, pkt, YAHOO_PKT_TYPE_P2P);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2596 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2597 case YAHOO_SERVICE_NOTIFY:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2598 yahoo_process_notify(p2p_data->gc, pkt, YAHOO_PKT_TYPE_P2P);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2599 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2600 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2601 purple_debug_warning("yahoo","p2p: p2p service %d Unhandled\n",pkt->service);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2602 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2603
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2604 yahoo_packet_free(pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2605 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2606
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2607 static void yahoo_p2p_server_send_connected_cb(gpointer data, gint source, PurpleInputCondition cond)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2608 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2609 int acceptfd;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2610 struct yahoo_p2p_data *p2p_data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2611 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2612
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2613 if(!(p2p_data = data))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2614 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2615 yd = p2p_data->gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2616
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2617 acceptfd = accept(source, NULL, 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2618 if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2619 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2620 else if(acceptfd == -1) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2621 purple_debug_warning("yahoo","yahoo_p2p_server_send_connected_cb: accept: %s\n", g_strerror(errno));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2622 yahoo_p2p_disconnect_destroy_data(data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2623 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2624 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2625
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2626 /* remove timeout */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2627 if (yd->yahoo_p2p_server_timeout_handle) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2628 purple_timeout_remove(yd->yahoo_p2p_server_timeout_handle);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2629 yd->yahoo_p2p_server_timeout_handle = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2630 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2631
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2632 /* remove watcher and close p2p server */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2633 if (yd->yahoo_p2p_server_watcher) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2634 purple_input_remove(yd->yahoo_p2p_server_watcher);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2635 yd->yahoo_p2p_server_watcher = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2636 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2637 if (yd->yahoo_local_p2p_server_fd >= 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2638 close(yd->yahoo_local_p2p_server_fd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2639 yd->yahoo_local_p2p_server_fd = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2640 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2641
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2642 /* Add an Input Read event to the file descriptor */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2643 p2p_data->input_event = purple_input_add(acceptfd, PURPLE_INPUT_READ, yahoo_p2p_read_pkt_cb, data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2644 p2p_data->source = acceptfd;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2645 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2646
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2647 static gboolean yahoo_cancel_p2p_server_listen_cb(gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2648 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2649 struct yahoo_p2p_data *p2p_data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2650 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2651
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2652 if(!(p2p_data = data))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2653 return FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2654
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2655 yd = p2p_data->gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2656
27499
d46ab8c52cc4 Fix two errors when my p2p server connection times out.
Paul Aurich <paul@darkrain42.org>
parents: 27464
diff changeset
2657 purple_debug_warning("yahoo","yahoo p2p server timeout, peer failed to connect\n");
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2658 yahoo_p2p_disconnect_destroy_data(data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2659 purple_input_remove(yd->yahoo_p2p_server_watcher);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2660 yd->yahoo_p2p_server_watcher = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2661 close(yd->yahoo_local_p2p_server_fd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2662 yd->yahoo_local_p2p_server_fd = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2663 yd->yahoo_p2p_server_timeout_handle = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2664
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2665 return FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2666 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2667
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2668 static void yahoo_p2p_server_listen_cb(int listenfd, gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2669 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2670 struct yahoo_p2p_data *p2p_data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2671 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2672
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2673 if(!(p2p_data = data))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2674 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2675
31530
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2676 yd = p2p_data->gc->proto_data;
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2677 yd->listen_data = NULL;
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2678
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2679 if(listenfd == -1) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2680 purple_debug_warning("yahoo","p2p: error starting p2p server\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2681 yahoo_p2p_disconnect_destroy_data(data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2682 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2683 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2684
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2685 /* Add an Input Read event to the file descriptor */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2686 yd->yahoo_local_p2p_server_fd = listenfd;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2687 yd->yahoo_p2p_server_watcher = purple_input_add(listenfd, PURPLE_INPUT_READ, yahoo_p2p_server_send_connected_cb,data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2688
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2689 /* add timeout */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2690 yd->yahoo_p2p_server_timeout_handle = purple_timeout_add_seconds(YAHOO_P2P_SERVER_TIMEOUT, yahoo_cancel_p2p_server_listen_cb, data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2691 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2692
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2693 /* send p2p pkt containing our encoded ip, asking peer to connect to us */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2694 void yahoo_send_p2p_pkt(PurpleConnection *gc, const char *who, int val_13)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2695 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2696 const char *public_ip;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2697 guint32 temp[4];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2698 guint32 ip;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2699 char temp_str[100];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2700 gchar *base64_ip = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2701 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2702 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2703 PurpleAccount *account;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2704 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2705 struct yahoo_p2p_data *p2p_data;
30758
06d8de5dd53c yahoo: Avoid misuse of purple_normalize
Paul Aurich <paul@darkrain42.org>
parents: 30640
diff changeset
2706 const char *norm_username;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2707
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2708 f = yahoo_friend_find(gc, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2709 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2710
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2711 /* Do not send invitation if already listening for other connection */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2712 if(yd->yahoo_local_p2p_server_fd >= 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2713 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2714
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2715 /* One shouldn't try to connect to self */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2716 if( strcmp(purple_normalize(account, purple_account_get_username(account)), who) == 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2717 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2718
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2719 /* send packet to only those friends who arent p2p connected and to whom we havent already sent. Do not send if this condition doesn't hold good */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2720 if( !( f && (yahoo_friend_get_p2p_status(f) == YAHOO_P2PSTATUS_NOT_CONNECTED) && (f->p2p_packet_sent == 0)) )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2721 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2722
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2723 /* Dont send p2p packet to buddies of other protocols */
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
2724 if(f->fed)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2725 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2726
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2727 /* Finally, don't try to connect to buddies not online or on sms */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2728 if( (f->status == YAHOO_STATUS_OFFLINE) || f->sms )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2729 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2730
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2731 public_ip = purple_network_get_public_ip();
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2732 if( (sscanf(public_ip, "%u.%u.%u.%u", &temp[0], &temp[1], &temp[2], &temp[3])) !=4 )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2733 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2734
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2735 ip = (temp[3] << 24) | (temp[2] <<16) | (temp[1] << 8) | temp[0];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2736 sprintf(temp_str, "%d", ip);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2737 base64_ip = purple_base64_encode( (guchar *)temp_str, strlen(temp_str) );
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2738
30758
06d8de5dd53c yahoo: Avoid misuse of purple_normalize
Paul Aurich <paul@darkrain42.org>
parents: 30640
diff changeset
2739 norm_username = purple_normalize(account, purple_account_get_username(account));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2740 pkt = yahoo_packet_new(YAHOO_SERVICE_PEERTOPEER, YAHOO_STATUS_AVAILABLE, 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2741 yahoo_packet_hash(pkt, "sssissis",
30758
06d8de5dd53c yahoo: Avoid misuse of purple_normalize
Paul Aurich <paul@darkrain42.org>
parents: 30640
diff changeset
2742 1, norm_username,
06d8de5dd53c yahoo: Avoid misuse of purple_normalize
Paul Aurich <paul@darkrain42.org>
parents: 30640
diff changeset
2743 4, norm_username,
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2744 12, base64_ip, /* base64 encode ip */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2745 61, 0, /* To-do : figure out what is 61 for?? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2746 2, "",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2747 5, who,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2748 13, val_13,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2749 49, "PEERTOPEER");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2750 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2751
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2752 f->p2p_packet_sent = 1; /* set p2p_packet_sent to sent */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2753
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2754 p2p_data = g_new0(struct yahoo_p2p_data, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2755
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2756 p2p_data->gc = gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2757 p2p_data->host_ip = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2758 p2p_data->host_username = g_strdup(who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2759 p2p_data->val_13 = val_13;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2760 p2p_data->connection_type = YAHOO_P2P_WE_ARE_SERVER;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2761 p2p_data->source = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2762
31530
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2763 /* FIXME: If the port is already used, purple_network_listener returns NULL and old listener won't be canceled
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2764 * in yahoo_close function. */
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2765 if (yd->listen_data)
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2766 purple_debug_warning("yahoo","p2p: Failed to create p2p server - server already exists\n");
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2767 else {
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2768 yd->listen_data = purple_network_listen(YAHOO_PAGER_PORT_P2P, SOCK_STREAM, yahoo_p2p_server_listen_cb, p2p_data);
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2769 if (yd->listen_data == NULL)
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2770 purple_debug_warning("yahoo","p2p: Failed to created p2p server\n");
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
2771 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2772
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2773 g_free(base64_ip);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2774 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2775
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2776 /* function called when connection to p2p host is setup */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2777 static void yahoo_p2p_init_cb(gpointer data, gint source, const gchar *error_message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2778 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2779 struct yahoo_p2p_data *p2p_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2780 struct yahoo_packet *pkt_to_send;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2781 PurpleAccount *account;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
2782 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2783
28163
90b471ba5282 Something will have gone horribly wrong if data is NULL here, so don't
Mark Doliner <mark@kingant.net>
parents: 28162
diff changeset
2784 p2p_data = data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2785 yd = p2p_data->gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2786
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2787 if(error_message != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2788 purple_debug_warning("yahoo","p2p: %s\n",error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2789 yahoo_send_p2p_pkt(p2p_data->gc, p2p_data->host_username, 2);/* send p2p init packet with val_13=2 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2790
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2791 yahoo_p2p_disconnect_destroy_data(p2p_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2792 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2793 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2794
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2795 /* Add an Input Read event to the file descriptor */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2796 p2p_data->input_event = purple_input_add(source, PURPLE_INPUT_READ, yahoo_p2p_read_pkt_cb, data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2797 p2p_data->source = source;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2798
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2799 account = purple_connection_get_account(p2p_data->gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2800
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2801 /* Build the yahoo packet */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2802 pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2803 yahoo_packet_hash(pkt_to_send, "ssisi",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2804 4, purple_normalize(account, purple_account_get_username(account)),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2805 5, p2p_data->host_username,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2806 241, 0, /* Protocol identifier */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2807 49, "PEERTOPEER",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2808 13, 1); /* we receive key13= 0 or 2, we send key13=1 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2809
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2810 yahoo_p2p_write_pkt(source, pkt_to_send); /* build raw packet and send */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2811 yahoo_packet_free(pkt_to_send);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2812 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2813
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2814 static void yahoo_process_p2p(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2815 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2816 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2817 char *who = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2818 char *base64 = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2819 guchar *decoded;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2820 gsize len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2821 gint val_13 = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2822 gint val_11 = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2823 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2824 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2825
29989
c4fe6afad87a yahoo: fix decoding of P2P session_id
vamposdecampos@gmail.com
parents: 29988
diff changeset
2826 /* if status is not YAHOO_STATUS_BRB or YAHOO_STATUS_P2P, the packet bounced back,
c4fe6afad87a yahoo: fix decoding of P2P session_id
vamposdecampos@gmail.com
parents: 29988
diff changeset
2827 * so it contains our own ip */
c4fe6afad87a yahoo: fix decoding of P2P session_id
vamposdecampos@gmail.com
parents: 29988
diff changeset
2828 if(pkt->status != YAHOO_STATUS_BRB && pkt->status != YAHOO_STATUS_P2P)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2829 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2830
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2831 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2832 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2833
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2834 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2835 case 5:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2836 /* our identity */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2837 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2838 case 4:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2839 who = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2840 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2841 case 1:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2842 /* who again, the master identity this time? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2843 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2844 case 12:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2845 base64 = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2846 /* so, this is an ip address. in base64. decoded it's in ascii.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2847 after strtol, it's in reversed byte order. Who thought this up?*/
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2848 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2849 case 13:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2850 val_13 = strtol(pair->value, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2851 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2852 case 11:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2853 val_11 = strtol(pair->value, NULL, 10); /* session id of peer */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2854 if( (f = yahoo_friend_find(gc, who)) )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2855 f->session_id = val_11;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2856 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2857 /*
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2858 TODO: figure these out
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2859 yahoo: Key: 61 Value: 0
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2860 yahoo: Key: 2 Value:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2861 yahoo: Key: 13 Value: 0 packet count ??
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2862 yahoo: Key: 49 Value: PEERTOPEER
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2863 yahoo: Key: 140 Value: 1
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2864 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2865
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2866 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2867
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2868 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2869 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2870
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2871 if (base64) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2872 guint32 ip;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2873 YahooFriend *f;
31053
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
2874 char *host_ip, *tmp;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2875 struct yahoo_p2p_data *p2p_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2876
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2877 decoded = purple_base64_decode(base64, &len);
31053
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
2878 if (decoded == NULL) {
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
2879 purple_debug_info("yahoo","p2p: Unable to decode base64 IP (%s) \n", base64);
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
2880 return;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2881 }
31053
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
2882 tmp = purple_str_binary_to_ascii(decoded, len);
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
2883 purple_debug_info("yahoo", "Got P2P service packet (from server): who = %s, ip = %s\n", who, tmp);
943fce8ef142 Fix for CVE-2010-3711. Properly validate the return value from
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30863
diff changeset
2884 g_free(tmp);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2885
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2886 ip = strtol((gchar *)decoded, NULL, 10);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2887 g_free(decoded);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2888 host_ip = g_strdup_printf("%u.%u.%u.%u", ip & 0xff, (ip >> 8) & 0xff, (ip >> 16) & 0xff,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2889 (ip >> 24) & 0xff);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2890 f = yahoo_friend_find(gc, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2891 if (f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2892 yahoo_friend_set_ip(f, host_ip);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2893 purple_debug_info("yahoo", "IP : %s\n", host_ip);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2894
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2895 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2896
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2897 if(val_11==0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2898 if(!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2899 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2900 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2901 val_11 = f->session_id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2902 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2903
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2904 p2p_data = g_new0(struct yahoo_p2p_data, 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2905 p2p_data->host_username = g_strdup(who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2906 p2p_data->val_13 = val_13;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2907 p2p_data->session_id = val_11;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2908 p2p_data->host_ip = host_ip;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2909 p2p_data->gc = gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2910 p2p_data->connection_type = YAHOO_P2P_WE_ARE_CLIENT;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2911 p2p_data->source = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2912
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2913 /* connect to host */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2914 if((purple_proxy_connect(gc, account, host_ip, YAHOO_PAGER_PORT_P2P, yahoo_p2p_init_cb, p2p_data))==NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2915 purple_debug_info("yahoo","p2p: Connection to %s failed\n", host_ip);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2916 g_free(p2p_data->host_ip);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2917 g_free(p2p_data->host_username);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2918 g_free(p2p_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2919 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2920 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2921 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2922
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2923 static void yahoo_process_audible(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2924 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2925 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2926 char *who = NULL, *msg = NULL, *id = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2927 GSList *l = pkt->hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2928
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2929 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2930
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2931 while (l) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2932 struct yahoo_pair *pair = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2933
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2934 switch (pair->key) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2935 case 4:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2936 who = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2937 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2938 case 5:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2939 /* us */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2940 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2941 case 230:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2942 /* the audible, in foo.locale.bar.baz format
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2943 eg: base.tw.smiley.smiley43 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2944 id = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2945 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2946 case 231:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2947 /* the text of the audible */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2948 msg = pair->value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2949 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2950 case 232:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2951 /* weird number (md5 hash?), like 8ebab9094156135f5dcbaccbeee662a5c5fd1420 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2952 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2953 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2954
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2955 l = l->next;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2956 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2957
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2958 if (!msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2959 msg = id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2960 if (!who || !msg)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2961 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2962 if (!g_utf8_validate(msg, -1, NULL)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2963 purple_debug_misc("yahoo", "Warning, nonutf8 audible, ignoring!\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2964 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2965 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2966 if (!purple_privacy_check(account, who)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2967 purple_debug_misc("yahoo", "Audible message from %s for %s dropped!\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2968 purple_account_get_username(account), who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2969 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2970 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2971 if (id) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2972 /* "http://us.dl1.yimg.com/download.yahoo.com/dl/aud/"+locale+"/"+id+".swf" */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2973 char **audible_locale = g_strsplit(id, ".", 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2974 char *buf = g_strdup_printf(_("[ Audible %s/%s/%s.swf ] %s"), YAHOO_AUDIBLE_URL, audible_locale[1], id, msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2975 g_strfreev(audible_locale);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2976
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2977 serv_got_im(gc, who, buf, 0, time(NULL));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2978 g_free(buf);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2979 } else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2980 serv_got_im(gc, who, msg, 0, time(NULL));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2981 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2982
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2983 static void yahoo_packet_process(PurpleConnection *gc, struct yahoo_packet *pkt)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2984 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2985 switch (pkt->service) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2986 case YAHOO_SERVICE_LOGON:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2987 case YAHOO_SERVICE_LOGOFF:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2988 case YAHOO_SERVICE_ISAWAY:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2989 case YAHOO_SERVICE_ISBACK:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2990 case YAHOO_SERVICE_GAMELOGON:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2991 case YAHOO_SERVICE_GAMELOGOFF:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2992 case YAHOO_SERVICE_CHATLOGON:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2993 case YAHOO_SERVICE_CHATLOGOFF:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2994 case YAHOO_SERVICE_Y6_STATUS_UPDATE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2995 case YAHOO_SERVICE_STATUS_15:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2996 yahoo_process_status(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2997 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2998 case YAHOO_SERVICE_NOTIFY:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
2999 yahoo_process_notify(gc, pkt, YAHOO_PKT_TYPE_SERVER);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3000 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3001 case YAHOO_SERVICE_MESSAGE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3002 case YAHOO_SERVICE_GAMEMSG:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3003 case YAHOO_SERVICE_CHATMSG:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3004 yahoo_process_message(gc, pkt, YAHOO_PKT_TYPE_SERVER);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3005 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3006 case YAHOO_SERVICE_SYSMESSAGE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3007 yahoo_process_sysmessage(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3008 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3009 case YAHOO_SERVICE_NEWMAIL:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3010 yahoo_process_mail(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3011 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3012 case YAHOO_SERVICE_NEWCONTACT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3013 yahoo_process_contact(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3014 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3015 case YAHOO_SERVICE_AUTHRESP:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3016 yahoo_process_authresp(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3017 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3018 case YAHOO_SERVICE_LIST:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3019 yahoo_process_list(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3020 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3021 case YAHOO_SERVICE_LIST_15:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3022 yahoo_process_list_15(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3023 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3024 case YAHOO_SERVICE_AUTH:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3025 yahoo_process_auth(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3026 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3027 case YAHOO_SERVICE_AUTH_REQ_15:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3028 yahoo_buddy_auth_req_15(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3029 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3030 case YAHOO_SERVICE_ADDBUDDY:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3031 yahoo_process_addbuddy(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3032 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3033 case YAHOO_SERVICE_IGNORECONTACT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3034 yahoo_process_ignore(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3035 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3036 case YAHOO_SERVICE_CONFINVITE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3037 case YAHOO_SERVICE_CONFADDINVITE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3038 yahoo_process_conference_invite(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3039 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3040 case YAHOO_SERVICE_CONFDECLINE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3041 yahoo_process_conference_decline(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3042 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3043 case YAHOO_SERVICE_CONFLOGON:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3044 yahoo_process_conference_logon(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3045 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3046 case YAHOO_SERVICE_CONFLOGOFF:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3047 yahoo_process_conference_logoff(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3048 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3049 case YAHOO_SERVICE_CONFMSG:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3050 yahoo_process_conference_message(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3051 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3052 case YAHOO_SERVICE_CHATONLINE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3053 yahoo_process_chat_online(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3054 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3055 case YAHOO_SERVICE_CHATLOGOUT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3056 yahoo_process_chat_logout(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3057 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3058 case YAHOO_SERVICE_CHATGOTO:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3059 yahoo_process_chat_goto(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3060 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3061 case YAHOO_SERVICE_CHATJOIN:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3062 yahoo_process_chat_join(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3063 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3064 case YAHOO_SERVICE_CHATLEAVE: /* XXX is this right? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3065 case YAHOO_SERVICE_CHATEXIT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3066 yahoo_process_chat_exit(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3067 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3068 case YAHOO_SERVICE_CHATINVITE: /* XXX never seen this one, might not do it right */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3069 case YAHOO_SERVICE_CHATADDINVITE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3070 yahoo_process_chat_addinvite(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3071 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3072 case YAHOO_SERVICE_COMMENT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3073 yahoo_process_chat_message(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3074 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3075 case YAHOO_SERVICE_PRESENCE_PERM:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3076 case YAHOO_SERVICE_PRESENCE_SESSION:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3077 yahoo_process_presence(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3078 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3079 case YAHOO_SERVICE_P2PFILEXFER:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3080 /* This case had no break and continued; thus keeping it this way.*/
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3081 yahoo_process_p2p(gc, pkt); /* P2PFILEXFER handled the same way as process_p2p */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3082 yahoo_process_p2pfilexfer(gc, pkt); /* redundant ??, need to have a break now */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3083 case YAHOO_SERVICE_FILETRANSFER:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3084 yahoo_process_filetransfer(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3085 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3086 case YAHOO_SERVICE_PEERTOPEER:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3087 yahoo_process_p2p(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3088 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3089 case YAHOO_SERVICE_PICTURE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3090 yahoo_process_picture(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3091 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3092 case YAHOO_SERVICE_PICTURE_CHECKSUM:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3093 yahoo_process_picture_checksum(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3094 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3095 case YAHOO_SERVICE_PICTURE_UPLOAD:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3096 yahoo_process_picture_upload(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3097 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3098 case YAHOO_SERVICE_PICTURE_UPDATE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3099 case YAHOO_SERVICE_AVATAR_UPDATE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3100 yahoo_process_avatar_update(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3101 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3102 case YAHOO_SERVICE_AUDIBLE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3103 yahoo_process_audible(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3104 break;
27614
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
3105 case YAHOO_SERVICE_CONTACT_DETAILS:
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
3106 yahoo_process_contact_details(gc, pkt);
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
3107 break;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3108 case YAHOO_SERVICE_FILETRANS_15:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3109 yahoo_process_filetrans_15(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3110 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3111 case YAHOO_SERVICE_FILETRANS_INFO_15:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3112 yahoo_process_filetrans_info_15(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3113 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3114 case YAHOO_SERVICE_FILETRANS_ACC_15:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3115 yahoo_process_filetrans_acc_15(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3116 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3117 case YAHOO_SERVICE_SMS_MSG:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3118 yahoo_process_sms_message(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3119 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3120
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3121 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3122 purple_debug_error("yahoo", "Unhandled service 0x%02x\n", pkt->service);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3123 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3124 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3125 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3126
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3127 static void yahoo_pending(gpointer data, gint source, PurpleInputCondition cond)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3128 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3129 PurpleConnection *gc = data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3130 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3131 char buf[1024];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3132 int len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3133
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3134 len = read(yd->fd, buf, sizeof(buf));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3135
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3136 if (len < 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3137 gchar *tmp;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3138
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3139 if (errno == EAGAIN)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3140 /* No worries */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3141 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3142
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3143 tmp = g_strdup_printf(_("Lost connection with server: %s"),
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3144 g_strerror(errno));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3145 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3146 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3147 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3148 } else if (len == 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3149 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3150 _("Server closed the connection"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3151 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3152 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3153 gc->last_received = time(NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3154 yd->rxqueue = g_realloc(yd->rxqueue, len + yd->rxlen);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3155 memcpy(yd->rxqueue + yd->rxlen, buf, len);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3156 yd->rxlen += len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3157
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3158 while (1) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3159 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3160 int pos = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3161 int pktlen;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3162
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3163 if (yd->rxlen < YAHOO_PACKET_HDRLEN)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3164 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3165
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3166 if (strncmp((char *)yd->rxqueue, "YMSG", MIN(4, yd->rxlen)) != 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3167 /* HEY! This isn't even a YMSG packet. What
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3168 * are you trying to pull? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3169 guchar *start;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3170
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3171 purple_debug_warning("yahoo", "Error in YMSG stream, got something not a YMSG packet!\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3172
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3173 start = memchr(yd->rxqueue + 1, 'Y', yd->rxlen - 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3174 if (start) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3175 g_memmove(yd->rxqueue, start, yd->rxlen - (start - yd->rxqueue));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3176 yd->rxlen -= start - yd->rxqueue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3177 continue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3178 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3179 g_free(yd->rxqueue);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3180 yd->rxqueue = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3181 yd->rxlen = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3182 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3183 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3184 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3185
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3186 pos += 4; /* YMSG */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3187 pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3188 pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3189
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3190 pktlen = yahoo_get16(yd->rxqueue + pos); pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3191 purple_debug_misc("yahoo", "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3192
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3193 if (yd->rxlen < (YAHOO_PACKET_HDRLEN + pktlen))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3194 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3195
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3196 yahoo_packet_dump(yd->rxqueue, YAHOO_PACKET_HDRLEN + pktlen);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3197
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3198 pkt = yahoo_packet_new(0, 0, 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3199
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3200 pkt->service = yahoo_get16(yd->rxqueue + pos); pos += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3201 pkt->status = yahoo_get32(yd->rxqueue + pos); pos += 4;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3202 purple_debug_misc("yahoo", "Yahoo Service: 0x%02x Status: %d\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3203 pkt->service, pkt->status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3204 pkt->id = yahoo_get32(yd->rxqueue + pos); pos += 4;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3205
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3206 yahoo_packet_read(pkt, yd->rxqueue + pos, pktlen);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3207
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3208 yd->rxlen -= YAHOO_PACKET_HDRLEN + pktlen;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3209 if (yd->rxlen) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3210 guchar *tmp = g_memdup(yd->rxqueue + YAHOO_PACKET_HDRLEN + pktlen, yd->rxlen);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3211 g_free(yd->rxqueue);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3212 yd->rxqueue = tmp;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3213 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3214 g_free(yd->rxqueue);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3215 yd->rxqueue = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3216 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3217
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3218 yahoo_packet_process(gc, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3219
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3220 yahoo_packet_free(pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3221 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3222 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3223
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3224 static void yahoo_got_connected(gpointer data, gint source, const gchar *error_message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3225 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3226 PurpleConnection *gc = data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3227 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3228 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3229
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3230 if (source < 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3231 gchar *tmp;
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3232 tmp = g_strdup_printf(_("Unable to connect: %s"), error_message);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3233 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3234 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3235 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3236 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3237
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3238 yd = gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3239 yd->fd = source;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3240
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
3241 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, yd->current_status, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3242
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3243 yahoo_packet_hash_str(pkt, 1, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc))));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3244 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3245
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3246 gc->inpa = purple_input_add(yd->fd, PURPLE_INPUT_READ, yahoo_pending, gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3247 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3248
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3249 #ifdef TRY_WEBMESSENGER_LOGIN
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3250 static void yahoo_got_web_connected(gpointer data, gint source, const gchar *error_message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3251 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3252 PurpleConnection *gc = data;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3253 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3254 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3255
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3256 if (source < 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3257 gchar *tmp;
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3258 tmp = g_strdup_printf(_("Unable to connect: %s"), error_message);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3259 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3260 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3261 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3262 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3263
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3264 yd = gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3265 yd->fd = source;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3266
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
3267 pkt = yahoo_packet_new(YAHOO_SERVICE_WEBLOGIN, YAHOO_STATUS_WEBLOGIN, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3268
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3269 yahoo_packet_hash(pkt, "sss", 0,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3270 purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc))),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3271 1, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc))),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3272 6, yd->auth);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3273 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3274
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3275 g_free(yd->auth);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3276 gc->inpa = purple_input_add(yd->fd, PURPLE_INPUT_READ, yahoo_pending, gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3277 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3278
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3279 static void yahoo_web_pending(gpointer data, gint source, PurpleInputCondition cond)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3280 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3281 PurpleConnection *gc = data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3282 PurpleAccount *account = purple_connection_get_account(gc);
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3283 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3284 char bufread[2048], *i = bufread, *buf = bufread;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3285 int len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3286 GString *s;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3287
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3288 len = read(source, bufread, sizeof(bufread) - 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3289
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3290 if (len < 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3291 gchar *tmp;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3292
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3293 if (errno == EAGAIN)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3294 /* No worries */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3295 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3296
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3297 tmp = g_strdup_printf(_("Lost connection with server: %s"),
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3298 g_strerror(errno));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3299 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3300 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3301 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3302 } else if (len == 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3303 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3304 _("Server closed the connection"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3305 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3306 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3307
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3308 if (yd->rxlen > 0 || !g_strstr_len(buf, len, "\r\n\r\n")) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3309 yd->rxqueue = g_realloc(yd->rxqueue, yd->rxlen + len + 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3310 memcpy(yd->rxqueue + yd->rxlen, buf, len);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3311 yd->rxlen += len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3312 i = buf = (char *)yd->rxqueue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3313 len = yd->rxlen;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3314 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3315 buf[len] = '\0';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3316
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3317 if ((strncmp(buf, "HTTP/1.0 302", strlen("HTTP/1.0 302")) &&
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3318 strncmp(buf, "HTTP/1.1 302", strlen("HTTP/1.1 302")))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3319 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3320 _("Received unexpected HTTP response from server"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3321 purple_debug_misc("yahoo", "Unexpected HTTP response: %s\n", buf);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3322 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3323 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3324
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3325 s = g_string_sized_new(len);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3326
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3327 while ((i = strstr(i, "Set-Cookie: "))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3328
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3329 i += strlen("Set-Cookie: ");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3330 for (;*i != ';' && *i != '\0'; i++)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3331 g_string_append_c(s, *i);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3332
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3333 g_string_append(s, "; ");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3334 /* Should these cookies be included too when trying for xfer?
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3335 * It seems to work without these
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3336 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3337 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3338
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3339 yd->auth = g_string_free(s, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3340 purple_input_remove(gc->inpa);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3341 close(source);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3342 g_free(yd->rxqueue);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3343 yd->rxqueue = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3344 yd->rxlen = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3345 /* Now we have our cookies to login with. I'll go get the milk. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3346 if (purple_proxy_connect(gc, account, "wcs2.msg.dcn.yahoo.com",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3347 purple_account_get_int(account, "port", YAHOO_PAGER_PORT),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3348 yahoo_got_web_connected, gc) == NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3349 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3350 _("Unable to connect"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3351 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3352 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3353 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3354
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3355 static void yahoo_got_cookies_send_cb(gpointer data, gint source, PurpleInputCondition cond)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3356 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3357 PurpleConnection *gc;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3358 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3359 int written, remaining;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3360
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3361 gc = data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3362 yd = gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3363
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3364 remaining = strlen(yd->auth) - yd->auth_written;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3365 written = write(source, yd->auth + yd->auth_written, remaining);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3366
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3367 if (written < 0 && errno == EAGAIN)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3368 written = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3369 else if (written <= 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3370 gchar *tmp;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3371 g_free(yd->auth);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3372 yd->auth = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3373 if (gc->inpa)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3374 purple_input_remove(gc->inpa);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3375 gc->inpa = 0;
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3376 tmp = g_strdup_printf(_("Lost connection with %s: %s"),
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3377 "login.yahoo.com:80", g_strerror(errno));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3378 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3379 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3380 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3381 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3382
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3383 if (written < remaining) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3384 yd->auth_written += written;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3385 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3386 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3387
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3388 g_free(yd->auth);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3389 yd->auth = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3390 yd->auth_written = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3391 purple_input_remove(gc->inpa);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3392 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, yahoo_web_pending, gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3393 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3395 static void yahoo_got_cookies(gpointer data, gint source, const gchar *error_message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3396 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3397 PurpleConnection *gc = data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3398
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3399 if (source < 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3400 gchar *tmp;
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3401 tmp = g_strdup_printf(_("Unable to establish a connection with %s: %s"),
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3402 "login.yahoo.com:80", error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3403 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3404 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3405 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3406 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3407
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3408 if (gc->inpa == 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3409 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3410 gc->inpa = purple_input_add(source, PURPLE_INPUT_WRITE,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3411 yahoo_got_cookies_send_cb, gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3412 yahoo_got_cookies_send_cb(gc, source, PURPLE_INPUT_WRITE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3413 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3414 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3415
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3416 static void yahoo_login_page_hash_iter(const char *key, const char *val, GString *url)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3417 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3418 if (!strcmp(key, "passwd") || !strcmp(key, "login"))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3419 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3420 g_string_append_c(url, '&');
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3421 g_string_append(url, key);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3422 g_string_append_c(url, '=');
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3423 if (!strcmp(key, ".save") || !strcmp(key, ".js"))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3424 g_string_append_c(url, '1');
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3425 else if (!strcmp(key, ".challenge"))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3426 g_string_append(url, val);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3427 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3428 g_string_append(url, purple_url_encode(val));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3429 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3430
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3431 static GHashTable *yahoo_login_page_hash(const char *buf, size_t len)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3432 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3433 GHashTable *hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3434 const char *c = buf;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3435 char *d;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3436 char name[64], value[64];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3437 int count;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3438 int input_len = strlen("<input ");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3439 int name_len = strlen("name=\"");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3440 int value_len = strlen("value=\"");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3441 while ((len > ((c - buf) + input_len))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3442 && (c = strstr(c, "<input "))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3443 if (!(c = g_strstr_len(c, len - (c - buf), "name=\"")))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3444 continue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3445 c += name_len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3446 count = sizeof(name)-1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3447 for (d = name; (len > ((c - buf) + 1)) && *c!='"'
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3448 && count; c++, d++, count--)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3449 *d = *c;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3450 *d = '\0';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3451 count = sizeof(value)-1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3452 if (!(d = g_strstr_len(c, len - (c - buf), "value=\"")))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3453 continue;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3454 d += value_len;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3455 if (strchr(c, '>') < d)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3456 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3457 for (c = d, d = value; (len > ((c - buf) + 1))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3458 && *c!='"' && count; c++, d++, count--)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3459 *d = *c;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3460 *d = '\0';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3461 g_hash_table_insert(hash, g_strdup(name), g_strdup(value));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3462 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3463 return hash;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3464 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3465
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3466 static void
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3467 yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3468 const gchar *url_text, size_t len, const gchar *error_message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3469 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3470 PurpleConnection *gc = (PurpleConnection *)user_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3471 PurpleAccount *account = purple_connection_get_account(gc);
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3472 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3473 const char *sn = purple_account_get_username(account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3474 const char *pass = purple_connection_get_password(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3475 GHashTable *hash = yahoo_login_page_hash(url_text, len);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3476 GString *url = g_string_new("GET http://login.yahoo.com/config/login?login=");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3477 char md5[33], *hashp = md5, *chal;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3478 int i;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3479 PurpleCipher *cipher;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3480 PurpleCipherContext *context;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3481 guchar digest[16];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3482
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3483 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3484
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3485 if (error_message != NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3486 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3487 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3488 error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3489 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3490 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3491
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3492 url = g_string_append(url, sn);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3493 url = g_string_append(url, "&passwd=");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3494
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3495 cipher = purple_ciphers_find_cipher("md5");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3496 context = purple_cipher_context_new(cipher, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3497
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3498 purple_cipher_context_append(context, (const guchar *)pass, strlen(pass));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3499 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3500 for (i = 0; i < 16; ++i) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3501 g_snprintf(hashp, 3, "%02x", digest[i]);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3502 hashp += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3503 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3504
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3505 chal = g_strconcat(md5, g_hash_table_lookup(hash, ".challenge"), NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3506 purple_cipher_context_reset(context, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3507 purple_cipher_context_append(context, (const guchar *)chal, strlen(chal));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3508 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3509 hashp = md5;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3510 for (i = 0; i < 16; ++i) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3511 g_snprintf(hashp, 3, "%02x", digest[i]);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3512 hashp += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3513 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3514 /*
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3515 * I dunno why this is here and commented out.. but in case it's needed
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3516 * I updated it..
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3517
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3518 purple_cipher_context_reset(context, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3519 purple_cipher_context_append(context, md5, strlen(md5));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3520 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3521 hashp = md5;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3522 for (i = 0; i < 16; ++i) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3523 g_snprintf(hashp, 3, "%02x", digest[i]);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3524 hashp += 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3525 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3526 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3527 g_free(chal);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3528
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3529 url = g_string_append(url, md5);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3530 g_hash_table_foreach(hash, (GHFunc)yahoo_login_page_hash_iter, url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3531
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3532 url = g_string_append(url, "&.hash=1&.md5=1 HTTP/1.1\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3533 "Host: login.yahoo.com\r\n\r\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3534 g_hash_table_destroy(hash);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3535 yd->auth = g_string_free(url, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3536 if (purple_proxy_connect(gc, account, "login.yahoo.com", 80, yahoo_got_cookies, gc) == NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3537 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27464
09772222714a merge of '599603c54f97d6978ff312a4ff140857302b0033'
Mark Doliner <mark@kingant.net>
parents: 27401
diff changeset
3538 _("Unable to connect"));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3539 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3540 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3541
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3542 purple_cipher_context_destroy(context);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3543 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3544 #endif /* TRY_WEBMESSENGER_LOGIN */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3545
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3546 static void yahoo_picture_check(PurpleAccount *account)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3547 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3548 PurpleConnection *gc = purple_account_get_connection(account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3549 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3550
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3551 yahoo_set_buddy_icon(gc, img);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3552 purple_imgstore_unref(img);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3553 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3554
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3555 static int get_yahoo_status_from_purple_status(PurpleStatus *status)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3556 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3557 PurplePresence *presence;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3558 const char *status_id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3559 const char *msg;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3560
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3561 presence = purple_status_get_presence(status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3562 status_id = purple_status_get_id(status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3563 msg = purple_status_get_attr_string(status, "message");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3564
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3565 if (!strcmp(status_id, YAHOO_STATUS_TYPE_AVAILABLE)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3566 if ((msg != NULL) && (*msg != '\0'))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3567 return YAHOO_STATUS_CUSTOM;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3568 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3569 return YAHOO_STATUS_AVAILABLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3570 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_BRB)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3571 return YAHOO_STATUS_BRB;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3572 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_BUSY)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3573 return YAHOO_STATUS_BUSY;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3574 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTATHOME)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3575 return YAHOO_STATUS_NOTATHOME;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3576 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTATDESK)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3577 return YAHOO_STATUS_NOTATDESK;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3578 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTINOFFICE)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3579 return YAHOO_STATUS_NOTINOFFICE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3580 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_ONPHONE)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3581 return YAHOO_STATUS_ONPHONE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3582 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_ONVACATION)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3583 return YAHOO_STATUS_ONVACATION;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3584 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_OUTTOLUNCH)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3585 return YAHOO_STATUS_OUTTOLUNCH;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3586 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_STEPPEDOUT)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3587 return YAHOO_STATUS_STEPPEDOUT;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3588 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_INVISIBLE)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3589 return YAHOO_STATUS_INVISIBLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3590 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_AWAY)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3591 return YAHOO_STATUS_CUSTOM;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3592 } else if (purple_presence_is_idle(presence)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3593 return YAHOO_STATUS_IDLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3594 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3595 purple_debug_error("yahoo", "Unexpected PurpleStatus!\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3596 return YAHOO_STATUS_AVAILABLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3597 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3598 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3599
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3600 static void yahoo_got_pager_server(PurpleUtilFetchUrlData *url_data,
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3601 gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message)
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3602 {
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3603 YahooData *yd = user_data;
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3604 PurpleConnection *gc = yd->gc;
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3605 PurpleAccount *a = purple_connection_get_account(gc);
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3606 gchar **strings = NULL, *cs_server = NULL;
30610
50380b60aa56 Fix a mistake I made with the fallback code. Refs #11986.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30607
diff changeset
3607 int port = purple_account_get_int(a, "port", YAHOO_PAGER_PORT);
50380b60aa56 Fix a mistake I made with the fallback code. Refs #11986.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30607
diff changeset
3608 int stringslen = 0;
30078
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3609
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
3610 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
3611
30078
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3612 if(error_message != NULL || len == 0) {
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3613 purple_debug_error("yahoo", "Unable to retrieve server info. %"
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3614 G_GSIZE_FORMAT " bytes retrieved with error message: %s\n", len,
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3615 error_message ? error_message : "(null)");
30607
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3616
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3617 if(yahoo_is_japan(a)) { /* We don't know fallback hosts for Yahoo Japan :( */
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3618 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3619 _("Unable to connect: The server returned an empty response."));
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3620 } else {
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3621 if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3622 yahoo_got_connected, gc) == NULL) {
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3623 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3624 _("Unable to connect"));
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3625 }
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3626 }
30078
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3627 } else {
30083
7081cefdd61a Small tweaks:
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30081
diff changeset
3628 strings = g_strsplit(url_text, "\r\n", -1);
30078
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3629
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3630 if((stringslen = g_strv_length(strings)) > 1) {
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3631 int i;
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3632
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3633 for(i = 0; i < stringslen; i++) {
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3634 if(g_ascii_strncasecmp(strings[i], "COLO_CAPACITY=", 14) == 0) {
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3635 purple_debug_info("yahoo", "Got COLO Capacity: %s\n", &(strings[i][14]));
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3636 } else if(g_ascii_strncasecmp(strings[i], "CS_IP_ADDRESS=", 14) == 0) {
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3637 cs_server = g_strdup(&strings[i][14]);
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3638 purple_debug_info("yahoo", "Got CS IP address: %s\n", cs_server);
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3639 }
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3640 }
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3641 }
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3642
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3643 if(cs_server) { /* got an address; get on with connecting */
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3644 if(purple_proxy_connect(gc, a, cs_server, port, yahoo_got_connected, gc) == NULL)
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3645 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3646 _("Unable to connect"));
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3647 } else {
30078
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3648 purple_debug_error("yahoo", "No CS address retrieved! Server "
51f997e2347f Some improvements to the new CS-via-HTTP stuff, sparked by Stu's suggestion to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30072
diff changeset
3649 "response:\n%s\n", url_text ? url_text : "(null)");
30607
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3650
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3651 if(yahoo_is_japan(a)) { /* We don't know fallback hosts for Yahoo Japan :( */
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3652 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3653 _("Unable to connect: The server's response did not contain "
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3654 "the necessary information"));
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3655 } else
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3656 if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3657 yahoo_got_connected, gc) == NULL) {
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3658 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3659 _("Unable to connect"));
e9001aa49be8 Very hackily implement a fallback mechanism in Yahoo, but not for Yahoo Japan
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30602
diff changeset
3660 }
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3661 }
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3662 }
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3663
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3664 g_strfreev(strings);
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3665 g_free(cs_server);
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3666 }
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3667
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
3668 void yahoo_login(PurpleAccount *account) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3669 PurpleConnection *gc = purple_account_get_connection(account);
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3670 YahooData *yd = gc->proto_data = g_new0(YahooData, 1);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3671 PurpleStatus *status = purple_account_get_active_status(account);
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3672 gboolean use_whole_url = yahoo_account_use_http_proxy(gc);
30602
27aff21c5eea Change the function of the "proxy_ssl" account option to cover regular HTTP
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30375
diff changeset
3673 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE);
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
3674 PurpleUtilFetchUrlData *url_data;
27624
0d32c4c08deb Simplify a block here and kill one of those uber-lines that annoy grim.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27615
diff changeset
3675
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3676 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3677
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3678 purple_connection_update_progress(gc, _("Connecting"), 1, 2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3679
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3680 purple_connection_set_display_name(gc, purple_account_get_username(account));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3681
27599
a9eb6dbbba1b Set the back-reference to the connection from the proto-data.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27591
diff changeset
3682 yd->gc = gc;
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3683 yd->jp = yahoo_is_japan(account);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3684 yd->yahoo_local_p2p_server_fd = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3685 yd->fd = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3686 yd->txhandler = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3687 /* TODO: Is there a good grow size for the buffer? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3688 yd->txbuf = purple_circ_buffer_new(0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3689 yd->friends = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, yahoo_friend_free);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3690 yd->imvironments = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3691 yd->xfer_peer_idstring_map = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
27624
0d32c4c08deb Simplify a block here and kill one of those uber-lines that annoy grim.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27615
diff changeset
3692 yd->peers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
0d32c4c08deb Simplify a block here and kill one of those uber-lines that annoy grim.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27615
diff changeset
3693 yahoo_p2p_disconnect_destroy_data);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3694 yd->sms_carrier = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
27624
0d32c4c08deb Simplify a block here and kill one of those uber-lines that annoy grim.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27615
diff changeset
3695 yd->yahoo_p2p_timer = purple_timeout_add_seconds(YAHOO_P2P_KEEPALIVE_SECS,
0d32c4c08deb Simplify a block here and kill one of those uber-lines that annoy grim.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27615
diff changeset
3696 yahoo_p2p_keepalive, gc);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3697 yd->confs = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3698 yd->conf_id = 2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3699 yd->last_keepalive = yd->last_ping = time(NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3700
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3701 yd->current_status = get_yahoo_status_from_purple_status(status);
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3702
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3703 yahoo_picture_check(account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3704
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3705 /* Get the pager server. Actually start connecting in the callback since we
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3706 * must have the contents of the HTTP response to proceed. */
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
3707 url_data = purple_util_fetch_url_request_len_with_account(
30602
27aff21c5eea Change the function of the "proxy_ssl" account option to cover regular HTTP
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30375
diff changeset
3708 proxy_ssl ? purple_connection_get_account(gc) : NULL,
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3709 yd->jp ? YAHOOJP_PAGER_HOST_REQ_URL : YAHOO_PAGER_HOST_REQ_URL,
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3710 use_whole_url ? TRUE : FALSE,
30610
50380b60aa56 Fix a mistake I made with the fallback code. Refs #11986.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30607
diff changeset
3711 YAHOO_CLIENT_USERAGENT, FALSE, NULL, FALSE, -1,
30072
60af53dd42d5 Ladies and gentlemen, I give you HTTP-based retrieval of the Yahoo CS server
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29989
diff changeset
3712 yahoo_got_pager_server, yd);
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
3713 if (url_data)
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
3714 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
27624
0d32c4c08deb Simplify a block here and kill one of those uber-lines that annoy grim.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27615
diff changeset
3715
0d32c4c08deb Simplify a block here and kill one of those uber-lines that annoy grim.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27615
diff changeset
3716 return;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3717 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3718
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
3719 void yahoo_close(PurpleConnection *gc) {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3720 YahooData *yd = (YahooData *)gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3721 GSList *l;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3722
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3723 if (gc->inpa)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3724 purple_input_remove(gc->inpa);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3725
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3726 while (yd->url_datas) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3727 purple_util_fetch_url_cancel(yd->url_datas->data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3728 yd->url_datas = g_slist_delete_link(yd->url_datas, yd->url_datas);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3729 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3730
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3731 for (l = yd->confs; l; l = l->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3732 PurpleConversation *conv = l->data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3733
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3734 yahoo_conf_leave(yd, purple_conversation_get_name(conv),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3735 purple_connection_get_display_name(gc),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3736 purple_conv_chat_get_users(PURPLE_CONV_CHAT(conv)));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3737 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3738 g_slist_free(yd->confs);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3739
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3740 for (l = yd->cookies; l; l = l->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3741 g_free(l->data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3742 l->data=NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3743 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3744 g_slist_free(yd->cookies);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3745
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3746 yd->chat_online = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3747 if (yd->in_chat)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3748 yahoo_c_leave(gc, 1); /* 1 = YAHOO_CHAT_ID */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3749
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3750 purple_timeout_remove(yd->yahoo_p2p_timer);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3751 if(yd->yahoo_p2p_server_timeout_handle != 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3752 purple_timeout_remove(yd->yahoo_p2p_server_timeout_handle);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3753 yd->yahoo_p2p_server_timeout_handle = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3754 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3755
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3756 /* close p2p server if it is waiting for a peer to connect */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3757 if (yd->yahoo_p2p_server_watcher) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3758 purple_input_remove(yd->yahoo_p2p_server_watcher);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3759 yd->yahoo_p2p_server_watcher = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3760 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3761 if (yd->yahoo_local_p2p_server_fd >= 0) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3762 close(yd->yahoo_local_p2p_server_fd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3763 yd->yahoo_local_p2p_server_fd = -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3764 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3765
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3766 g_hash_table_destroy(yd->sms_carrier);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3767 g_hash_table_destroy(yd->peers);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3768 g_hash_table_destroy(yd->friends);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3769 g_hash_table_destroy(yd->imvironments);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3770 g_hash_table_destroy(yd->xfer_peer_idstring_map);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3771 g_free(yd->chat_name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3772
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3773 g_free(yd->cookie_y);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3774 g_free(yd->cookie_t);
30108
258454cfecee Leaking the B cookie is bad.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30098
diff changeset
3775 g_free(yd->cookie_b);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3776
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3777 if (yd->txhandler)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3778 purple_input_remove(yd->txhandler);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3779
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3780 purple_circ_buffer_destroy(yd->txbuf);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3781
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3782 if (yd->fd >= 0)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3783 close(yd->fd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3784
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3785 g_free(yd->rxqueue);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3786 yd->rxlen = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3787 g_free(yd->picture_url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3788
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3789 if (yd->buddy_icon_connect_data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3790 purple_proxy_connect_cancel(yd->buddy_icon_connect_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3791 if (yd->picture_upload_todo)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3792 yahoo_buddy_icon_upload_data_free(yd->picture_upload_todo);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3793 if (yd->ycht)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3794 ycht_connection_close(yd->ycht);
31530
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
3795 if (yd->listen_data != NULL)
86598f5d7ebd Yahoo: Fix a crash that happens when the PurpleAccount disconnects after
hanzz@soc.pidgin.im
parents: 31053
diff changeset
3796 purple_network_listen_cancel(yd->listen_data);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3797
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3798 g_free(yd->pending_chat_room);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3799 g_free(yd->pending_chat_id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3800 g_free(yd->pending_chat_topic);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3801 g_free(yd->pending_chat_goto);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3802 g_strfreev(yd->profiles);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3803
27614
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
3804 yahoo_personal_details_reset(&yd->ypd, TRUE);
27531
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
3805
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3806 g_free(yd->current_list15_grp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3807
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3808 g_free(yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3809 gc->proto_data = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3810 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3811
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
3812 const char *yahoo_list_icon(PurpleAccount *a, PurpleBuddy *b)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3813 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3814 return "yahoo";
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3815 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3816
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
3817 const char *yahoo_list_emblem(PurpleBuddy *b)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3818 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3819 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3820 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3821 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3822 PurplePresence *presence;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3823
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3824 if (!b || !(account = purple_buddy_get_account(b)) ||
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3825 !(gc = purple_account_get_connection(account)) ||
30846
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30758
diff changeset
3826 !gc->proto_data)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3827 return NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3828
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3829 f = yahoo_friend_find(gc, purple_buddy_get_name(b));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3830 if (!f) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3831 return "not-authorized";
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3832 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3833
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3834 presence = purple_buddy_get_presence(b);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3835
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3836 if (purple_presence_is_online(presence)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3837 if (yahoo_friend_get_game(f))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3838 return "game";
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
3839
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
3840 if (f->fed)
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
3841 return "external";
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3842 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3843 return NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3844 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3845
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3846 static const char *yahoo_get_status_string(enum yahoo_status a)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3847 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3848 switch (a) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3849 case YAHOO_STATUS_BRB:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3850 return _("Be Right Back");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3851 case YAHOO_STATUS_BUSY:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3852 return _("Busy");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3853 case YAHOO_STATUS_NOTATHOME:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3854 return _("Not at Home");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3855 case YAHOO_STATUS_NOTATDESK:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3856 return _("Not at Desk");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3857 case YAHOO_STATUS_NOTINOFFICE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3858 return _("Not in Office");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3859 case YAHOO_STATUS_ONPHONE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3860 return _("On the Phone");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3861 case YAHOO_STATUS_ONVACATION:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3862 return _("On Vacation");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3863 case YAHOO_STATUS_OUTTOLUNCH:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3864 return _("Out to Lunch");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3865 case YAHOO_STATUS_STEPPEDOUT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3866 return _("Stepped Out");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3867 case YAHOO_STATUS_INVISIBLE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3868 return _("Invisible");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3869 case YAHOO_STATUS_IDLE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3870 return _("Idle");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3871 case YAHOO_STATUS_OFFLINE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3872 return _("Offline");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3873 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3874 return _("Available");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3875 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3876 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3877
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3878 static void yahoo_initiate_conference(PurpleBlistNode *node, gpointer data) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3879
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3880 PurpleBuddy *buddy;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3881 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3882
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3883 GHashTable *components;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
3884 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3885 int id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3886
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3887 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3888
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3889 buddy = (PurpleBuddy *) node;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3890 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3891 yd = gc->proto_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3892 id = yd->conf_id;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3893
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3894 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3895 g_hash_table_replace(components, g_strdup("room"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3896 g_strdup_printf("%s-%d", purple_connection_get_display_name(gc), id));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3897 g_hash_table_replace(components, g_strdup("topic"), g_strdup("Join my conference..."));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3898 g_hash_table_replace(components, g_strdup("type"), g_strdup("Conference"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3899 yahoo_c_join(gc, components);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3900 g_hash_table_destroy(components);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3901
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3902 yahoo_c_invite(gc, id, "Join my conference...", purple_buddy_get_name(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3903 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3904
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3905 static void yahoo_presence_settings(PurpleBlistNode *node, gpointer data) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3906 PurpleBuddy *buddy;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3907 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3908 int presence_val = GPOINTER_TO_INT(data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3909
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3910 buddy = (PurpleBuddy *) node;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3911 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3912
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3913 yahoo_friend_update_presence(gc, purple_buddy_get_name(buddy), presence_val);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3914 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3915
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3916 static void yahoo_game(PurpleBlistNode *node, gpointer data) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3917
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3918 PurpleBuddy *buddy;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3919 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3920
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3921 const char *game;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3922 char *game2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3923 char *t;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3924 char url[256];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3925 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3926
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3927 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3928
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3929 buddy = (PurpleBuddy *) node;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3930 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3931
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3932 f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3933 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3934 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3935
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3936 game = yahoo_friend_get_game(f);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3937 if (!game)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3938 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3939
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3940 t = game2 = g_strdup(strstr(game, "ante?room="));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3941 while (*t && *t != '\t')
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3942 t++;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3943 *t = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3944 g_snprintf(url, sizeof url, "http://games.yahoo.com/games/%s", game2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3945 purple_notify_uri(gc, url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3946 g_free(game2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3947 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3948
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
3949 char *yahoo_status_text(PurpleBuddy *b)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3950 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3951 YahooFriend *f = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3952 const char *msg;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3953 char *msg2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3954 PurpleAccount *account;
27500
d4cfd179203b yahoo: Don't do anything in yahoo_status_text when disconnecting.
Paul Aurich <paul@darkrain42.org>
parents: 27499
diff changeset
3955 PurpleConnection *gc;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3956
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3957 account = purple_buddy_get_account(b);
27500
d4cfd179203b yahoo: Don't do anything in yahoo_status_text when disconnecting.
Paul Aurich <paul@darkrain42.org>
parents: 27499
diff changeset
3958 gc = purple_account_get_connection(account);
d4cfd179203b yahoo: Don't do anything in yahoo_status_text when disconnecting.
Paul Aurich <paul@darkrain42.org>
parents: 27499
diff changeset
3959 if (!gc || !purple_connection_get_protocol_data(gc))
d4cfd179203b yahoo: Don't do anything in yahoo_status_text when disconnecting.
Paul Aurich <paul@darkrain42.org>
parents: 27499
diff changeset
3960 return NULL;
d4cfd179203b yahoo: Don't do anything in yahoo_status_text when disconnecting.
Paul Aurich <paul@darkrain42.org>
parents: 27499
diff changeset
3961
d4cfd179203b yahoo: Don't do anything in yahoo_status_text when disconnecting.
Paul Aurich <paul@darkrain42.org>
parents: 27499
diff changeset
3962 f = yahoo_friend_find(gc, purple_buddy_get_name(b));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3963 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3964 return g_strdup(_("Not on server list"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3965
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3966 switch (f->status) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3967 case YAHOO_STATUS_AVAILABLE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3968 return NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3969 case YAHOO_STATUS_IDLE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3970 if (f->idle == -1)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3971 return g_strdup(yahoo_get_status_string(f->status));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3972 return NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3973 case YAHOO_STATUS_CUSTOM:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3974 if (!(msg = yahoo_friend_get_status_message(f)))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3975 return NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3976 msg2 = g_markup_escape_text(msg, strlen(msg));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3977 purple_util_chrreplace(msg2, '\n', ' ');
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3978 return msg2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3979
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3980 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3981 return g_strdup(yahoo_get_status_string(f->status));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3982 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3983 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3984
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3985 void yahoo_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3986 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3987 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3988 char *escaped;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3989 char *status = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3990 const char *presence = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3991 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3992
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3993 account = purple_buddy_get_account(b);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3994 f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3995 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3996 status = g_strdup_printf("\n%s", _("Not on server list"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3997 else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3998 switch (f->status) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3999 case YAHOO_STATUS_CUSTOM:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4000 if (!yahoo_friend_get_status_message(f))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4001 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4002 status = g_strdup(yahoo_friend_get_status_message(f));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4003 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4004 case YAHOO_STATUS_OFFLINE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4005 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4006 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4007 status = g_strdup(yahoo_get_status_string(f->status));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4008 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4009 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4010
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4011 switch (f->presence) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4012 case YAHOO_PRESENCE_ONLINE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4013 presence = _("Appear Online");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4014 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4015 case YAHOO_PRESENCE_PERM_OFFLINE:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4016 presence = _("Appear Permanently Offline");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4017 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4018 case YAHOO_PRESENCE_DEFAULT:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4019 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4020 default:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4021 purple_debug_error("yahoo", "Unknown presence in yahoo_tooltip_text\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4022 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4023 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4024 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4025
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4026 if (status != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4027 escaped = g_markup_escape_text(status, strlen(status));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4028 purple_notify_user_info_add_pair(user_info, _("Status"), escaped);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4029 g_free(status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4030 g_free(escaped);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4031 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4032
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4033 if (presence != NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4034 purple_notify_user_info_add_pair(user_info, _("Presence"), presence);
27614
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4035
28071
7da3bf6d3b2c Don't crash when opening a tooltip for yahoo contacts who aren't on
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 28025
diff changeset
4036 if (f && full) {
27614
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4037 YahooPersonalDetails *ypd = &f->ypd;
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4038 int i;
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4039 struct {
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4040 char *id;
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4041 char *text;
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4042 char *value;
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4043 } yfields[] = {
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4044 {"hp", N_("Home Phone Number"), ypd->phone.home},
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4045 {"wp", N_("Work Phone Number"), ypd->phone.work},
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4046 {"mo", N_("Mobile Phone Number"), ypd->phone.mobile},
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4047 {NULL, NULL, NULL}
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4048 };
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4049 for (i = 0; yfields[i].id; i++) {
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4050 if (!yfields[i].value || !*yfields[i].value)
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4051 continue;
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4052 purple_notify_user_info_add_pair(user_info, _(yfields[i].text), yfields[i].value);
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4053 }
fa827f6f990f Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27603
diff changeset
4054 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4055 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4056
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4057 static void yahoo_addbuddyfrommenu_cb(PurpleBlistNode *node, gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4058 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4059 PurpleBuddy *buddy;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4060 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4061
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4062 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4063
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4064 buddy = (PurpleBuddy *) node;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4065 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4066
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4067 yahoo_add_buddy(gc, buddy, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4068 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4069
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4070
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4071 static void yahoo_chat_goto_menu(PurpleBlistNode *node, gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4072 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4073 PurpleBuddy *buddy;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4074 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4075
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4076 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4077
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4078 buddy = (PurpleBuddy *) node;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4079 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4080
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4081 yahoo_chat_goto(gc, purple_buddy_get_name(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4082 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4083
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4084 static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4085 GList *m = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4086 PurpleMenuAction *act;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4087 YahooData *yd = (YahooData *) gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4088
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4089 if (yd->current_status == YAHOO_STATUS_INVISIBLE) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4090 if (f->presence != YAHOO_PRESENCE_ONLINE) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4091 act = purple_menu_action_new(_("Appear Online"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4092 PURPLE_CALLBACK(yahoo_presence_settings),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4093 GINT_TO_POINTER(YAHOO_PRESENCE_ONLINE),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4094 NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4095 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4096 } else if (f->presence != YAHOO_PRESENCE_DEFAULT) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4097 act = purple_menu_action_new(_("Appear Offline"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4098 PURPLE_CALLBACK(yahoo_presence_settings),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4099 GINT_TO_POINTER(YAHOO_PRESENCE_DEFAULT),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4100 NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4101 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4102 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4103 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4104
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4105 if (f->presence == YAHOO_PRESENCE_PERM_OFFLINE) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4106 act = purple_menu_action_new(_("Don't Appear Permanently Offline"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4107 PURPLE_CALLBACK(yahoo_presence_settings),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4108 GINT_TO_POINTER(YAHOO_PRESENCE_DEFAULT),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4109 NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4110 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4111 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4112 act = purple_menu_action_new(_("Appear Permanently Offline"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4113 PURPLE_CALLBACK(yahoo_presence_settings),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4114 GINT_TO_POINTER(YAHOO_PRESENCE_PERM_OFFLINE),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4115 NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4116 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4117 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4118
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4119 return m;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4120 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4121
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4122 static void yahoo_doodle_blist_node(PurpleBlistNode *node, gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4123 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4124 PurpleBuddy *b = (PurpleBuddy *)node;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4125 PurpleAccount *account = purple_buddy_get_account(b);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4126 PurpleConnection *gc = purple_account_get_connection(account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4127
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4128 yahoo_doodle_initiate(gc, purple_buddy_get_name(b));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4129 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4130
27615
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4131 static void
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4132 yahoo_userinfo_blist_node(PurpleBlistNode *node, gpointer data)
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4133 {
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4134 PurpleBuddy *b = (PurpleBuddy *)node;
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4135 PurpleAccount *account = purple_buddy_get_account(b);
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4136 PurpleConnection *gc = purple_account_get_connection(account);
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4137
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4138 yahoo_set_userinfo_for_buddy(gc, b);
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4139 }
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4140
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4141 static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4142 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4143 GList *m = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4144 PurpleMenuAction *act;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4145
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4146 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4147 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4148 static char buf2[1024];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4149 YahooFriend *f;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4150
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4151 f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4152
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4153 if (!f && !yd->wm) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4154 act = purple_menu_action_new(_("Add Buddy"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4155 PURPLE_CALLBACK(yahoo_addbuddyfrommenu_cb),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4156 NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4157 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4158
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4159 return m;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4160
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4161 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4162
28838
99b9c9ee7363 Disable unsupported actions for federated users on Yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28836
diff changeset
4163 if (f && f->status != YAHOO_STATUS_OFFLINE && f->fed == YAHOO_FEDERATION_NONE) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4164 if (!yd->wm) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4165 act = purple_menu_action_new(_("Join in Chat"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4166 PURPLE_CALLBACK(yahoo_chat_goto_menu),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4167 NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4168 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4169 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4170
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4171 act = purple_menu_action_new(_("Initiate Conference"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4172 PURPLE_CALLBACK(yahoo_initiate_conference),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4173 NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4174 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4175
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4176 if (yahoo_friend_get_game(f)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4177 const char *game = yahoo_friend_get_game(f);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4178 char *room;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4179 char *t;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4180
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4181 if ((room = strstr(game, "&follow="))) {/* skip ahead to the url */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4182 while (*room && *room != '\t') /* skip to the tab */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4183 room++;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4184 t = room++; /* room as now at the name */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4185 while (*t != '\n')
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4186 t++; /* replace the \n with a space */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4187 *t = ' ';
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4188 g_snprintf(buf2, sizeof buf2, "%s", room);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4189
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4190 act = purple_menu_action_new(buf2,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4191 PURPLE_CALLBACK(yahoo_game),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4192 NULL, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4193 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4194 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4195 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4196 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4197
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4198 if (f) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4199 act = purple_menu_action_new(_("Presence Settings"), NULL, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4200 build_presence_submenu(f, gc));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4201 m = g_list_append(m, act);
27615
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4202
28838
99b9c9ee7363 Disable unsupported actions for federated users on Yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28836
diff changeset
4203 if (f->fed == YAHOO_FEDERATION_NONE) {
99b9c9ee7363 Disable unsupported actions for federated users on Yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28836
diff changeset
4204 act = purple_menu_action_new(_("Start Doodling"),
99b9c9ee7363 Disable unsupported actions for federated users on Yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28836
diff changeset
4205 PURPLE_CALLBACK(yahoo_doodle_blist_node),
99b9c9ee7363 Disable unsupported actions for federated users on Yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28836
diff changeset
4206 NULL, NULL);
99b9c9ee7363 Disable unsupported actions for federated users on Yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28836
diff changeset
4207 m = g_list_append(m, act);
99b9c9ee7363 Disable unsupported actions for federated users on Yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28836
diff changeset
4208 }
27615
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4209
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4210 act = purple_menu_action_new(_("Set User Info..."),
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4211 PURPLE_CALLBACK(yahoo_userinfo_blist_node),
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4212 NULL, NULL);
b909c4a7bfc8 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27614
diff changeset
4213 m = g_list_append(m, act);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4214 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4215
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4216 return m;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4217 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4218
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4219 GList *yahoo_blist_node_menu(PurpleBlistNode *node)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4220 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4221 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4222 return yahoo_buddy_menu((PurpleBuddy *) node);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4223 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4224 return NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4225 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4226 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4227
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4228 static void yahoo_act_id(PurpleConnection *gc, PurpleRequestFields *fields)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4229 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4230 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4231 const char *name = yd->profiles[purple_request_fields_get_choice(fields, "id")];
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4232
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4233 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_IDACT, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4234 yahoo_packet_hash_str(pkt, 3, name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4235 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4236
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4237 purple_connection_set_display_name(gc, name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4238 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4239
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4240 static void
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4241 yahoo_get_inbox_token_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4242 const gchar *token, size_t len, const gchar *error_message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4243 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4244 PurpleConnection *gc = user_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4245 gboolean set_cookie = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4246 gchar *url;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4247 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4248
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4249 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4250
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4251 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4252
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4253 if (error_message != NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4254 purple_debug_error("yahoo", "Requesting mail login token failed: %s\n", error_message);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4255 else if (len > 0 && token && *token) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4256 /* Should we not be hardcoding the rd url? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4257 url = g_strdup_printf(
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4258 "http://login.yahoo.com/config/reset_cookies_token?"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4259 ".token=%s"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4260 "&.done=http://us.rd.yahoo.com/messenger/client/%%3fhttp://mail.yahoo.com/",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4261 token);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4262 set_cookie = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4263 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4264
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4265 if (!set_cookie) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4266 purple_debug_error("yahoo", "No mail login token; forwarding to login screen.\n");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4267 url = g_strdup(yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4268 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4269
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4270 /* Open the mailbox with the parsed url data */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4271 purple_notify_uri(gc, url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4272
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4273 g_free(url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4274 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4275
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4276
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4277 static void yahoo_show_inbox(PurplePluginAction *action)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4278 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4279 /* Setup a cookie that can be used by the browser */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4280 /* XXX I have no idea how this will work with Yahoo! Japan. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4281
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4282 PurpleConnection *gc = action->context;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4283 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4284
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4285 PurpleUtilFetchUrlData *url_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4286 const char* base_url = "http://login.yahoo.com";
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4287 /* use whole URL if using HTTP Proxy */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4288 gboolean use_whole_url = yahoo_account_use_http_proxy(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4289 gchar *request = g_strdup_printf(
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4290 "POST %s/config/cookie_token HTTP/1.0\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4291 "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s;\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4292 "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4293 "Host: login.yahoo.com\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4294 "Content-Length: 0\r\n\r\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4295 use_whole_url ? base_url : "",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4296 yd->cookie_t, yd->cookie_y);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4297
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4298 url_data = purple_util_fetch_url_request_len_with_account(
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4299 purple_connection_get_account(gc), base_url, use_whole_url,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4300 YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4301 yahoo_get_inbox_token_cb, gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4302
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4303 g_free(request);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4304
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4305 if (url_data != NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4306 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4307 else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4308 const char *yahoo_mail_url = (yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4309 purple_debug_error("yahoo",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4310 "Unable to request mail login token; forwarding to login screen.");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4311 purple_notify_uri(gc, yahoo_mail_url);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4312 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4313 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4314
27531
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4315 static void
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4316 yahoo_set_userinfo_fn(PurplePluginAction *action)
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4317 {
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4318 yahoo_set_userinfo(action->context);
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4319 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4320
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4321 static void yahoo_show_act_id(PurplePluginAction *action)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4322 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4323 PurpleRequestFields *fields;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4324 PurpleRequestFieldGroup *group;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4325 PurpleRequestField *field;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4326 PurpleConnection *gc = (PurpleConnection *) action->context;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4327 YahooData *yd = purple_connection_get_protocol_data(gc);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4328 const char *name = purple_connection_get_display_name(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4329 int iter;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4330
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4331 fields = purple_request_fields_new();
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4332 group = purple_request_field_group_new(NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4333 purple_request_fields_add_group(fields, group);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4334 field = purple_request_field_choice_new("id", "Activate which ID?", 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4335 purple_request_field_group_add_field(group, field);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4336
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4337 for (iter = 0; yd->profiles[iter]; iter++) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4338 purple_request_field_choice_add(field, yd->profiles[iter]);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4339 if (purple_strequal(yd->profiles[iter], name))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4340 purple_request_field_choice_set_default_value(field, iter);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4341 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4342
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4343 purple_request_fields(gc, NULL, _("Select the ID you want to activate"), NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4344 fields,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4345 _("OK"), G_CALLBACK(yahoo_act_id),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4346 _("Cancel"), NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4347 purple_connection_get_account(gc), NULL, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4348 gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4349 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4350
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4351 static void yahoo_show_chat_goto(PurplePluginAction *action)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4352 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4353 PurpleConnection *gc = (PurpleConnection *) action->context;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4354 purple_request_input(gc, NULL, _("Join whom in chat?"), NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4355 "", FALSE, FALSE, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4356 _("OK"), G_CALLBACK(yahoo_chat_goto),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4357 _("Cancel"), NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4358 purple_connection_get_account(gc), NULL, NULL,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4359 gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4360 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4361
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4362 GList *yahoo_actions(PurplePlugin *plugin, gpointer context) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4363 GList *m = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4364 PurplePluginAction *act;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4365
27531
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4366 act = purple_plugin_action_new(_("Set User Info..."),
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4367 yahoo_set_userinfo_fn);
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4368 m = g_list_append(m, act);
07d09a987b86 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27517
diff changeset
4369
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4370 act = purple_plugin_action_new(_("Activate ID..."),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4371 yahoo_show_act_id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4372 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4373
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4374 act = purple_plugin_action_new(_("Join User in Chat..."),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4375 yahoo_show_chat_goto);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4376 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4377
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4378 m = g_list_append(m, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4379 act = purple_plugin_action_new(_("Open Inbox"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4380 yahoo_show_inbox);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4381 m = g_list_append(m, act);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4382
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4383 return m;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4384 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4385
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4386 struct yahoo_sms_carrier_cb_data {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4387 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4388 char *who;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4389 char *what;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4390 };
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4391
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4392 static void yahoo_get_sms_carrier_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4393 const gchar *webdata, size_t len, const gchar *error_message)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4394 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4395 struct yahoo_sms_carrier_cb_data *sms_cb_data = user_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4396 PurpleConnection *gc = sms_cb_data->gc;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4397 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4398 char *status = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4399 char *carrier = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4400 PurpleAccount *account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4401 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4402
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
4403 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
4404
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4405 if (error_message != NULL) {
28641
154b4042d8cf Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28620
diff changeset
4406 purple_conversation_write(conv, NULL, _("Can't send SMS. Unable to obtain mobile carrier."), PURPLE_MESSAGE_SYSTEM, time(NULL));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4407
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4408 g_free(sms_cb_data->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4409 g_free(sms_cb_data->what);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4410 g_free(sms_cb_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4411 return ;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4412 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4413 else if (len > 0 && webdata && *webdata) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4414 xmlnode *validate_data_root = xmlnode_from_str(webdata, -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4415 xmlnode *validate_data_child = xmlnode_get_child(validate_data_root, "mobile_no");
28642
4bf9579328f0 Don't free what you don't own.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28641
diff changeset
4416 const char *mobile_no = xmlnode_get_attrib(validate_data_child, "msisdn");
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4417
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4418 validate_data_root = xmlnode_copy(validate_data_child);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4419 validate_data_child = xmlnode_get_child(validate_data_root, "status");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4420 status = xmlnode_get_data(validate_data_child);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4421
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4422 validate_data_child = xmlnode_get_child(validate_data_root, "carrier");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4423 carrier = xmlnode_get_data(validate_data_child);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4424
29393
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4425 purple_debug_info("yahoo", "SMS validate data: %s\n", webdata);
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4426
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4427 if (status && g_str_equal(status, "Valid") == 0) {
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4428 g_hash_table_insert(yd->sms_carrier,
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4429 g_strdup_printf("+%s", mobile_no), g_strdup(carrier));
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4430 yahoo_send_im(sms_cb_data->gc, sms_cb_data->who,
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4431 sms_cb_data->what, PURPLE_MESSAGE_SEND);
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4432 } else {
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4433 g_hash_table_insert(yd->sms_carrier,
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4434 g_strdup_printf("+%s", mobile_no), g_strdup("Unknown"));
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4435 purple_conversation_write(conv, NULL,
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4436 _("Can't send SMS. Unknown mobile carrier."),
fa35d7029a14 * Don't crash if status is NULL
Mark Doliner <mark@kingant.net>
parents: 28838
diff changeset
4437 PURPLE_MESSAGE_SYSTEM, time(NULL));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4438 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4439
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4440 xmlnode_free(validate_data_child);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4441 xmlnode_free(validate_data_root);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4442 g_free(sms_cb_data->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4443 g_free(sms_cb_data->what);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4444 g_free(sms_cb_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4445 g_free(status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4446 g_free(carrier);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4447 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4448 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4449
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4450 static void yahoo_get_sms_carrier(PurpleConnection *gc, gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4451 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4452 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4453 PurpleUtilFetchUrlData *url_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4454 struct yahoo_sms_carrier_cb_data *sms_cb_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4455 char *validate_request_str = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4456 char *request = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4457 gboolean use_whole_url = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4458 xmlnode *validate_request_root = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4459 xmlnode *validate_request_child = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4460
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4461 if(!(sms_cb_data = data))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4462 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4463
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4464 validate_request_root = xmlnode_new("validate");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4465 xmlnode_set_attrib(validate_request_root, "intl", "us");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4466 xmlnode_set_attrib(validate_request_root, "version", YAHOO_CLIENT_VERSION);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4467 xmlnode_set_attrib(validate_request_root, "qos", "0");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4468
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4469 validate_request_child = xmlnode_new_child(validate_request_root, "mobile_no");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4470 xmlnode_set_attrib(validate_request_child, "msisdn", sms_cb_data->who + 1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4471
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4472 validate_request_str = xmlnode_to_str(validate_request_root, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4473
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4474 xmlnode_free(validate_request_child);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4475 xmlnode_free(validate_request_root);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4476
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4477 request = g_strdup_printf(
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4478 "POST /mobileno?intl=us&version=%s HTTP/1.1\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4479 "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s; path=/; domain=.yahoo.com;\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4480 "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4481 "Host: validate.msg.yahoo.com\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4482 "Content-Length: %" G_GSIZE_FORMAT "\r\n"
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4483 "Cache-Control: no-cache\r\n\r\n%s",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4484 YAHOO_CLIENT_VERSION, yd->cookie_t, yd->cookie_y, strlen(validate_request_str), validate_request_str);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4485
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4486 /* use whole URL if using HTTP Proxy */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4487 if ((gc->account->proxy_info) && (gc->account->proxy_info->type == PURPLE_PROXY_HTTP))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4488 use_whole_url = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4489
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4490 url_data = purple_util_fetch_url_request_len_with_account(
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4491 purple_connection_get_account(gc), YAHOO_SMS_CARRIER_URL, use_whole_url,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4492 YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4493 yahoo_get_sms_carrier_cb, data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4494
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4495 g_free(request);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4496 g_free(validate_request_str);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4497
30375
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
4498 if (url_data)
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
4499 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
04c84a3f9553 yahoo: Fix a few race-condition crashes at login
Paul Aurich <paul@darkrain42.org>
parents: 30113
diff changeset
4500 else {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4501 PurpleAccount *account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4502 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account);
28641
154b4042d8cf Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28620
diff changeset
4503 purple_conversation_write(conv, NULL, _("Can't send SMS. Unable to obtain mobile carrier."), PURPLE_MESSAGE_SYSTEM, time(NULL));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4504 g_free(sms_cb_data->who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4505 g_free(sms_cb_data->what);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4506 g_free(sms_cb_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4507 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4508 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4509
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4510 int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4511 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4512 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4513 struct yahoo_packet *pkt = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4514 char *msg = yahoo_html_to_codes(what);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4515 char *msg2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4516 gboolean utf8 = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4517 PurpleWhiteboard *wb;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4518 int ret = 1;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4519 const char *fed_who;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4520 gsize lenb = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4521 glong lenc = 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4522 struct yahoo_p2p_data *p2p_data;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4523 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4524 msg2 = yahoo_string_encode(gc, msg, &utf8);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4525
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4526 if(msg2) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4527 lenb = strlen(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4528 lenc = g_utf8_strlen(msg2, -1);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4529
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4530 if(lenb > YAHOO_MAX_MESSAGE_LENGTH_BYTES || lenc > YAHOO_MAX_MESSAGE_LENGTH_CHARS) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4531 purple_debug_info("yahoo", "Message too big. Length is %" G_GSIZE_FORMAT
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4532 " bytes, %ld characters. Max is %d bytes, %d chars."
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4533 " Message is '%s'.\n", lenb, lenc, YAHOO_MAX_MESSAGE_LENGTH_BYTES,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4534 YAHOO_MAX_MESSAGE_LENGTH_CHARS, msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4535 g_free(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4536 g_free(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4537 return -E2BIG;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4538 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4539 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4540
28836
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
4541 fed = yahoo_get_federation_from_name(who);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4542
28665
60e4ef6801ff I think this is the more correct way of determining invisibility.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28642
diff changeset
4543 if (who[0] == '+') {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4544 /* we have an sms to be sent */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4545 gchar *carrier = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4546 const char *alias = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4547 PurpleAccount *account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4548 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4549
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4550 carrier = g_hash_table_lookup(yd->sms_carrier, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4551 if (!carrier) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4552 struct yahoo_sms_carrier_cb_data *sms_cb_data;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4553 sms_cb_data = g_malloc(sizeof(struct yahoo_sms_carrier_cb_data));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4554 sms_cb_data->gc = gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4555 sms_cb_data->who = g_strdup(who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4556 sms_cb_data->what = g_strdup(what);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4557
28641
154b4042d8cf Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28620
diff changeset
4558 purple_conversation_write(conv, NULL, _("Getting mobile carrier to send the SMS."), PURPLE_MESSAGE_SYSTEM, time(NULL));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4559
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4560 yahoo_get_sms_carrier(gc, sms_cb_data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4561
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4562 g_free(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4563 g_free(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4564 return ret;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4565 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4566 else if( strcmp(carrier,"Unknown") == 0 ) {
28641
154b4042d8cf Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28620
diff changeset
4567 purple_conversation_write(conv, NULL, _("Can't send SMS. Unknown mobile carrier."), PURPLE_MESSAGE_SYSTEM, time(NULL));
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4568
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4569 g_free(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4570 g_free(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4571 return -1;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4572 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4573
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4574 alias = purple_account_get_alias(account);
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4575 pkt = yahoo_packet_new(YAHOO_SERVICE_SMS_MSG, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4576 yahoo_packet_hash(pkt, "sssss",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4577 1, purple_connection_get_display_name(gc),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4578 69, alias,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4579 5, who + 1,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4580 68, carrier,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4581 14, msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4582 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4583
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4584 g_free(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4585 g_free(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4586
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4587 return ret;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4588 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4589
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4590 pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, yd->session_id);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4591 fed_who = who;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4592 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4593 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4594 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4595 case YAHOO_FEDERATION_IBM:
29394
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
4596 case YAHOO_FEDERATION_PBX:
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4597 fed_who += 4;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4598 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4599 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4600 default:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4601 break;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4602 }
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4603 yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, fed_who);
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4604 if (fed)
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4605 yahoo_packet_hash_int(pkt, 241, fed);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4606
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4607 if (utf8)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4608 yahoo_packet_hash_str(pkt, 97, "1");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4609 yahoo_packet_hash_str(pkt, 14, msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4610
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4611 /*
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4612 * IMVironment.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4613 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4614 * If this message is to a user who is also Doodling with the local user,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4615 * format the chat packet with the correct IMV information (thanks Yahoo!)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4616 *
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4617 * Otherwise attempt to use the same IMVironment as the remote user,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4618 * just so that we don't inadvertantly reset their IMVironment back
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4619 * to nothing.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4620 *
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4621 * If they have not set an IMVironment, then use the default.
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4622 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4623 wb = purple_whiteboard_get_session(gc->account, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4624 if (wb)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4625 yahoo_packet_hash_str(pkt, 63, DOODLE_IMV_KEY);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4626 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4627 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4628 const char *imv;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4629 imv = g_hash_table_lookup(yd->imvironments, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4630 if (imv != NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4631 yahoo_packet_hash_str(pkt, 63, imv);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4632 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4633 yahoo_packet_hash_str(pkt, 63, ";0");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4634 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4635
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4636 yahoo_packet_hash_str(pkt, 64, "0"); /* no idea */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4637 yahoo_packet_hash_str(pkt, 1002, "1"); /* no idea, Yahoo 6 or later only it seems */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4638 if (!yd->picture_url)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4639 yahoo_packet_hash_str(pkt, 206, "0"); /* 0 = no picture, 2 = picture, maybe 1 = avatar? */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4640 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4641 yahoo_packet_hash_str(pkt, 206, "2");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4642
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4643 /* We may need to not send any packets over 2000 bytes, but I'm not sure yet. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4644 if ((YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt)) <= 2000) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4645 /* if p2p link exists, send through it. To-do: key 15, time value to be sent in case of p2p */
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4646 if( (p2p_data = g_hash_table_lookup(yd->peers, who)) && !fed) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4647 yahoo_packet_hash_int(pkt, 11, p2p_data->session_id);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4648 yahoo_p2p_write_pkt(p2p_data->source, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4649 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4650 else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4651 yahoo_packet_send(pkt, yd);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4652 if(!fed)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4653 yahoo_send_p2p_pkt(gc, who, 0); /* send p2p packet, with val_13=0 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4654 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4655 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4656 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4657 ret = -E2BIG;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4658
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4659 yahoo_packet_free(pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4660
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4661 g_free(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4662 g_free(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4663
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4664 return ret;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4665 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4666
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4667 unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4668 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4669 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4670 struct yahoo_p2p_data *p2p_data;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4671 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4672 struct yahoo_packet *pkt = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4673
28836
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
4674 fed = yahoo_get_federation_from_name(who);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4675
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4676 /* Don't do anything if sms is being typed */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4677 if( strncmp(who, "+", 1) == 0 )
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4678 return 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4679
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4680 pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4681
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4682 /* check to see if p2p link exists, send through it */
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4683 if( (p2p_data = g_hash_table_lookup(yd->peers, who)) && !fed) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4684 yahoo_packet_hash(pkt, "sssssis", 49, "TYPING", 1, purple_connection_get_display_name(gc),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4685 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4686 5, who, 11, p2p_data->session_id, 1002, "1"); /* To-do: key 15 to be sent in case of p2p */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4687 yahoo_p2p_write_pkt(p2p_data->source, pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4688 yahoo_packet_free(pkt);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4689 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4690 else { /* send through yahoo server */
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4691
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4692 const char *fed_who = who;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4693 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4694 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4695 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4696 case YAHOO_FEDERATION_IBM:
29394
d1cecbc467c6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents: 29393
diff changeset
4697 case YAHOO_FEDERATION_PBX:
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4698 fed_who += 4;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4699 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4700 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4701 default:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4702 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4703 }
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
4704
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4705 yahoo_packet_hash(pkt, "ssssss", 49, "TYPING", 1, purple_connection_get_display_name(gc),
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4706 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4707 5, fed_who, 1002, "1");
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4708 if (fed)
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4709 yahoo_packet_hash_int(pkt, 241, fed);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4710 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4711 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4712
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4713 return 0;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4714 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4715
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4716 static void yahoo_session_presence_remove(gpointer key, gpointer value, gpointer data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4717 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4718 YahooFriend *f = value;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4719 if (f && f->presence == YAHOO_PRESENCE_ONLINE)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4720 f->presence = YAHOO_PRESENCE_DEFAULT;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4721 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4722
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4723 void yahoo_set_status(PurpleAccount *account, PurpleStatus *status)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4724 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4725 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4726 PurplePresence *presence;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4727 YahooData *yd;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4728 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4729 int old_status;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4730 const char *msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4731 char *tmp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4732 char *conv_msg = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4733 gboolean utf8 = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4734
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4735 if (!purple_status_is_active(status))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4736 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4737
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4738 gc = purple_account_get_connection(account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4739 presence = purple_status_get_presence(status);
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4740 yd = (YahooData *)gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4741 old_status = yd->current_status;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4742
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4743 yd->current_status = get_yahoo_status_from_purple_status(status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4744
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4745 if (yd->current_status == YAHOO_STATUS_CUSTOM)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4746 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4747 msg = purple_status_get_attr_string(status, "message");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4748
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4749 if (purple_status_is_available(status)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4750 tmp = yahoo_string_encode(gc, msg, &utf8);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4751 conv_msg = purple_markup_strip_html(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4752 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4753 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4754 if ((msg == NULL) || (*msg == '\0'))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4755 msg = _("Away");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4756 tmp = yahoo_string_encode(gc, msg, &utf8);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4757 conv_msg = purple_markup_strip_html(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4758 g_free(tmp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4759 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4760 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4761
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4762 if (yd->current_status == YAHOO_STATUS_INVISIBLE) {
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4763 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4764 yahoo_packet_hash_str(pkt, 13, "2");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4765 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4766
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4767 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4768 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4769
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4770 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4771 yahoo_packet_hash_int(pkt, 10, yd->current_status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4772
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4773 if (yd->current_status == YAHOO_STATUS_CUSTOM) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4774 yahoo_packet_hash_str(pkt, 97, utf8 ? "1" : 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4775 yahoo_packet_hash_str(pkt, 19, conv_msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4776 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4777 yahoo_packet_hash_str(pkt, 19, "");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4778 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4779
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4780 g_free(conv_msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4781
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4782 if (purple_presence_is_idle(presence))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4783 yahoo_packet_hash_str(pkt, 47, "2");
28602
c51f00627af4 Fixes #10224
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28464
diff changeset
4784 else {
c51f00627af4 Fixes #10224
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28464
diff changeset
4785 if (!purple_status_is_available(status))
c51f00627af4 Fixes #10224
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28464
diff changeset
4786 yahoo_packet_hash_str(pkt, 47, "1");
c51f00627af4 Fixes #10224
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28464
diff changeset
4787 else
c51f00627af4 Fixes #10224
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28464
diff changeset
4788 yahoo_packet_hash_str(pkt, 47, "0");
c51f00627af4 Fixes #10224
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28464
diff changeset
4789 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4790
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4791 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4792
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4793 if (old_status == YAHOO_STATUS_INVISIBLE) {
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4794 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4795 yahoo_packet_hash_str(pkt, 13, "1");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4796 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4797
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4798 /* Any per-session presence settings are removed */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4799 g_hash_table_foreach(yd->friends, yahoo_session_presence_remove, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4800
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4801 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4802 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4803
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4804 void yahoo_set_idle(PurpleConnection *gc, int idle)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4805 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4806 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4807 struct yahoo_packet *pkt = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4808 char *msg = NULL, *msg2 = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4809 PurpleStatus *status = NULL;
28429
ea6e571ebe4d Fixes #7722.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28394
diff changeset
4810 gboolean invisible = FALSE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4811
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4812 if (idle && yd->current_status != YAHOO_STATUS_CUSTOM)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4813 yd->current_status = YAHOO_STATUS_IDLE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4814 else if (!idle && yd->current_status == YAHOO_STATUS_IDLE) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4815 status = purple_presence_get_active_status(purple_account_get_presence(purple_connection_get_account(gc)));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4816 yd->current_status = get_yahoo_status_from_purple_status(status);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4817 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4818
28665
60e4ef6801ff I think this is the more correct way of determining invisibility.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28642
diff changeset
4819 invisible = (yd->current_status == YAHOO_STATUS_INVISIBLE);
28429
ea6e571ebe4d Fixes #7722.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28394
diff changeset
4820
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4821 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4822
28429
ea6e571ebe4d Fixes #7722.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28394
diff changeset
4823 if (!idle && invisible)
ea6e571ebe4d Fixes #7722.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28394
diff changeset
4824 yahoo_packet_hash_int(pkt, 10, YAHOO_STATUS_AVAILABLE);
ea6e571ebe4d Fixes #7722.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28394
diff changeset
4825 else
ea6e571ebe4d Fixes #7722.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28394
diff changeset
4826 yahoo_packet_hash_int(pkt, 10, yd->current_status);
ea6e571ebe4d Fixes #7722.
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28394
diff changeset
4827
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4828 if (yd->current_status == YAHOO_STATUS_CUSTOM) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4829 const char *tmp;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4830 if (status == NULL)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4831 status = purple_presence_get_active_status(purple_account_get_presence(purple_connection_get_account(gc)));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4832 tmp = purple_status_get_attr_string(status, "message");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4833 if (tmp != NULL) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4834 gboolean utf8 = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4835 msg = yahoo_string_encode(gc, tmp, &utf8);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4836 msg2 = purple_markup_strip_html(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4837 yahoo_packet_hash_str(pkt, 97, utf8 ? "1" : 0);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4838 yahoo_packet_hash_str(pkt, 19, msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4839 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4840 /* get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4841 * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4842 yahoo_packet_hash_str(pkt, 19, _("Away"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4843 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4844 } else {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4845 yahoo_packet_hash_str(pkt, 19, "");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4846 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4847
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4848 if (idle)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4849 yahoo_packet_hash_str(pkt, 47, "2");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4850
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4851 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4852
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4853 g_free(msg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4854 g_free(msg2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4855 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4856
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4857 GList *yahoo_status_types(PurpleAccount *account)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4858 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4859 PurpleStatusType *type;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4860 GList *types = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4861
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4862 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, YAHOO_STATUS_TYPE_AVAILABLE,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4863 NULL, TRUE, TRUE, FALSE,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4864 "message", _("Message"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4865 purple_value_new(PURPLE_TYPE_STRING), NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4866 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4867
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4868 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_AWAY,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4869 NULL, TRUE, TRUE, FALSE,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4870 "message", _("Message"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4871 purple_value_new(PURPLE_TYPE_STRING), NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4872 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4873
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4874 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_BRB, _("Be Right Back"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4875 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4876
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4877 type = purple_status_type_new(PURPLE_STATUS_UNAVAILABLE, YAHOO_STATUS_TYPE_BUSY, _("Busy"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4878 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4879
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4880 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_NOTATHOME, _("Not at Home"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4881 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4882
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4883 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_NOTATDESK, _("Not at Desk"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4884 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4885
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4886 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_NOTINOFFICE, _("Not in Office"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4887 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4888
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4889 type = purple_status_type_new(PURPLE_STATUS_UNAVAILABLE, YAHOO_STATUS_TYPE_ONPHONE, _("On the Phone"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4890 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4891
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4892 type = purple_status_type_new(PURPLE_STATUS_EXTENDED_AWAY, YAHOO_STATUS_TYPE_ONVACATION, _("On Vacation"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4893 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4894
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4895 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_OUTTOLUNCH, _("Out to Lunch"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4896 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4897
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4898 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_STEPPEDOUT, _("Stepped Out"), TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4899 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4900
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4901
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4902 type = purple_status_type_new(PURPLE_STATUS_INVISIBLE, YAHOO_STATUS_TYPE_INVISIBLE, NULL, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4903 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4904
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4905 type = purple_status_type_new(PURPLE_STATUS_OFFLINE, YAHOO_STATUS_TYPE_OFFLINE, NULL, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4906 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4907
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4908 type = purple_status_type_new_full(PURPLE_STATUS_MOBILE, YAHOO_STATUS_TYPE_MOBILE, NULL, FALSE, FALSE, TRUE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4909 types = g_list_append(types, type);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4910
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4911 return types;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4912 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4913
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4914 void yahoo_keepalive(PurpleConnection *gc)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4915 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4916 struct yahoo_packet *pkt;
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4917 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4918 time_t now = time(NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4919
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4920 /* We're only allowed to send a ping once an hour or the servers will boot us */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4921 if ((now - yd->last_ping) >= PING_TIMEOUT) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4922 yd->last_ping = now;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4923
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4924 /* The native client will only send PING or CHATPING */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4925 if (yd->chat_online) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4926 if (yd->wm) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4927 ycht_chat_send_keepalive(yd->ycht);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4928 } else {
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4929 pkt = yahoo_packet_new(YAHOO_SERVICE_CHATPING, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4930 yahoo_packet_hash_str(pkt, 109, purple_connection_get_display_name(gc));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4931 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4932 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4933 } else {
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4934 pkt = yahoo_packet_new(YAHOO_SERVICE_PING, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4935 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4936 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4937 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4938
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4939 if ((now - yd->last_keepalive) >= KEEPALIVE_TIMEOUT) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4940 yd->last_keepalive = now;
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4941 pkt = yahoo_packet_new(YAHOO_SERVICE_KEEPALIVE, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4942 yahoo_packet_hash_str(pkt, 0, purple_connection_get_display_name(gc));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4943 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4944 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4945
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4946 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4947
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
4948 void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4949 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
4950 YahooData *yd = (YahooData *)gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4951 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4952 const char *group = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4953 char *group2;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4954 const char *bname;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4955 const char *fed_bname;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4956 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4957
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4958 if (!yd->logged_in)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4959 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4960
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4961 fed_bname = bname = purple_buddy_get_name(buddy);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4962 if (!purple_privacy_check(purple_connection_get_account(gc), bname))
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4963 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4964
28836
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
4965 fed = yahoo_get_federation_from_name(bname);
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
4966 if (fed != YAHOO_FEDERATION_NONE)
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4967 fed_bname += 4;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4968
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4969 g = purple_buddy_get_group(buddy);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4970 if (g)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4971 group = purple_group_get_name(g);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4972 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4973 group = "Buddies";
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4974
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4975 group2 = yahoo_string_encode(gc, group, NULL);
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
4976 pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4977 if (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4978 yahoo_packet_hash(pkt, "sssssssisss",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4979 14, "",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4980 65, group2,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4981 97, "1",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4982 1, purple_connection_get_display_name(gc),
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4983 302, "319",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4984 300, "319",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4985 7, fed_bname,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4986 241, fed,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4987 334, "0",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4988 301, "319",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4989 303, "319"
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4990 );
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4991 }
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4992 else {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
4993 yahoo_packet_hash(pkt, "ssssssssss",
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4994 14, "",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4995 65, group2,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4996 97, "1",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4997 1, purple_connection_get_display_name(gc),
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4998 302, "319",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
4999 300, "319",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5000 7, fed_bname,
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5001 334, "0",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5002 301, "319",
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5003 303, "319"
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5004 );
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5005 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5006
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5007 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5008 g_free(group2);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5009 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5010
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5011 void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5012 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
5013 YahooData *yd = (YahooData *)gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5014 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5015 GSList *buddies, *l;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5016 PurpleGroup *g;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5017 gboolean remove = TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5018 char *cg;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5019 const char *bname, *gname;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5020 YahooFriend *f = NULL;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5021 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5022
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5023 bname = purple_buddy_get_name(buddy);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5024 f = yahoo_friend_find(gc, bname);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5025 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5026 return;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5027 fed = f->fed;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5028
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5029 gname = purple_group_get_name(group);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5030 buddies = purple_find_buddies(purple_connection_get_account(gc), bname);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5031 for (l = buddies; l; l = l->next) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5032 g = purple_buddy_get_group(l->data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5033 if (purple_utf8_strcasecmp(gname, purple_group_get_name(g))) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5034 remove = FALSE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5035 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5036 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5037 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5038
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5039 g_slist_free(buddies);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5040
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5041 if (remove) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5042 g_hash_table_remove(yd->friends, bname);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5043 f = NULL; /* f no longer valid - Just making it clear */
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5044 }
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5045
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5046 cg = yahoo_string_encode(gc, gname, NULL);
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
5047 pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5048
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5049 switch (fed) {
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5050 case YAHOO_FEDERATION_MSN:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5051 case YAHOO_FEDERATION_OCS:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5052 case YAHOO_FEDERATION_IBM:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5053 bname += 4;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5054 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5055 case YAHOO_FEDERATION_NONE:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5056 default:
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5057 break;
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5058 }
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5059
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5060 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5061 7, bname, 65, cg);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5062 if (fed)
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5063 yahoo_packet_hash_int(pkt, 241, fed);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5064 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5065 g_free(cg);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5066 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5067
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5068 void yahoo_add_deny(PurpleConnection *gc, const char *who) {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
5069 YahooData *yd = (YahooData *)gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5070 struct yahoo_packet *pkt;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5071 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5072
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5073 if (!yd->logged_in)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5074 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5075
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5076 if (!who || who[0] == '\0')
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5077 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5078
28836
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
5079 fed = yahoo_get_federation_from_name(who);
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
5080
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
5081 pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, yd->session_id);
28439
e61b10db0044 This will fix adding, removing MSN contacts on yahoo's deny list
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28436
diff changeset
5082
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5083 if(fed)
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5084 yahoo_packet_hash(pkt, "ssis", 1, purple_connection_get_display_name(gc), 7, who+4, 241, fed, 13, "1");
28439
e61b10db0044 This will fix adding, removing MSN contacts on yahoo's deny list
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28436
diff changeset
5085 else
e61b10db0044 This will fix adding, removing MSN contacts on yahoo's deny list
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28436
diff changeset
5086 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "1");
e61b10db0044 This will fix adding, removing MSN contacts on yahoo's deny list
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28436
diff changeset
5087
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5088 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5089 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5090
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5091 void yahoo_rem_deny(PurpleConnection *gc, const char *who) {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
5092 YahooData *yd = (YahooData *)gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5093 struct yahoo_packet *pkt;
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5094 YahooFederation fed = YAHOO_FEDERATION_NONE;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5095
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5096 if (!yd->logged_in)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5097 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5098
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5099 if (!who || who[0] == '\0')
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5100 return;
28836
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
5101 fed = yahoo_get_federation_from_name(who);
7b88cc6c3f7a Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28829
diff changeset
5102
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
5103 pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, yd->session_id);
28439
e61b10db0044 This will fix adding, removing MSN contacts on yahoo's deny list
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28436
diff changeset
5104
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5105 if(fed)
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5106 yahoo_packet_hash(pkt, "ssis", 1, purple_connection_get_display_name(gc), 7, who+4, 241, fed, 13, "2");
28439
e61b10db0044 This will fix adding, removing MSN contacts on yahoo's deny list
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28436
diff changeset
5107 else
e61b10db0044 This will fix adding, removing MSN contacts on yahoo's deny list
Sulabh Mahajan <sulabh@soc.pidgin.im>
parents: 28436
diff changeset
5108 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "2");
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31530
diff changeset
5109
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5110 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5111 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5112
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5113 void yahoo_set_permit_deny(PurpleConnection *gc)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5114 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5115 PurpleAccount *account;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5116 GSList *deny;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5117
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5118 account = purple_connection_get_account(gc);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5119
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5120 switch (account->perm_deny)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5121 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5122 case PURPLE_PRIVACY_ALLOW_ALL:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5123 for (deny = account->deny; deny; deny = deny->next)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5124 yahoo_rem_deny(gc, deny->data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5125 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5126
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5127 case PURPLE_PRIVACY_ALLOW_BUDDYLIST:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5128 case PURPLE_PRIVACY_ALLOW_USERS:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5129 case PURPLE_PRIVACY_DENY_USERS:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5130 case PURPLE_PRIVACY_DENY_ALL:
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5131 for (deny = account->deny; deny; deny = deny->next)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5132 yahoo_add_deny(gc, deny->data);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5133 break;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5134 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5135 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5136
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5137 void yahoo_change_buddys_group(PurpleConnection *gc, const char *who,
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5138 const char *old_group, const char *new_group)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5139 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
5140 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5141 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5142 char *gpn, *gpo;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5143 YahooFriend *f = yahoo_friend_find(gc, who);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5144 const char *temp = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5145
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5146 /* Step 0: If they aren't on the server list anyway,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5147 * don't bother letting the server know.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5148 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5149 if (!f)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5150 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5151
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5152 if(f->fed) {
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5153 temp = who+4;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5154 } else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5155 temp = who;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5156
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5157 /* If old and new are the same, we would probably
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5158 * end up deleting the buddy, which would be bad.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5159 * This might happen because of the charset conversation.
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5160 */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5161 gpn = yahoo_string_encode(gc, new_group, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5162 gpo = yahoo_string_encode(gc, old_group, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5163 if (!strcmp(gpn, gpo)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5164 g_free(gpn);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5165 g_free(gpo);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5166 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5167 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5168
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
5169 pkt = yahoo_packet_new(YAHOO_SERVICE_CHGRP_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5170 if(f->fed)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5171 yahoo_packet_hash(pkt, "ssssissss", 1, purple_connection_get_display_name(gc),
28733
61856d0a2714 Handle adding Lotus Sametime and Microsoft OCS buddies to Yahoo! accounts.
kryojenik23-pidgin@steltek.com
parents: 28673
diff changeset
5172 302, "240", 300, "240", 7, temp, 241, f->fed, 224, gpo, 264, gpn, 301,
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5173 "240", 303, "240");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5174 else
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5175 yahoo_packet_hash(pkt, "ssssssss", 1, purple_connection_get_display_name(gc),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5176 302, "240", 300, "240", 7, temp, 224, gpo, 264, gpn, 301,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5177 "240", 303, "240");
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5178 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5179
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5180 g_free(gpn);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5181 g_free(gpo);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5182 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5183
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5184 void yahoo_rename_group(PurpleConnection *gc, const char *old_name,
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5185 PurpleGroup *group, GList *moved_buddies)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5186 {
28025
908be3822215 Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28000
diff changeset
5187 YahooData *yd = gc->proto_data;
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5188 struct yahoo_packet *pkt;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5189 char *gpn, *gpo;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5190
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5191 gpn = yahoo_string_encode(gc, purple_group_get_name(group), NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5192 gpo = yahoo_string_encode(gc, old_name, NULL);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5193 if (!strcmp(gpn, gpo)) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5194 g_free(gpn);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5195 g_free(gpo);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5196 return;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5197 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5198
27679
0ec880685f5f Change a crapton of our Yahoo! packets to use the session ID we're assigned
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27672
diff changeset
5199 pkt = yahoo_packet_new(YAHOO_SERVICE_GROUPRENAME, YAHOO_STATUS_AVAILABLE, yd->session_id);
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5200 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5201 65, gpo, 67, gpn);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5202 yahoo_packet_send_and_free(pkt, yd);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5203 g_free(gpn);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5204 g_free(gpo);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5205 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5206
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5207 /********************************* Commands **********************************/
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5208
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5209 PurpleCmdRet
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5210 yahoopurple_cmd_buzz(PurpleConversation *c, const gchar *cmd, gchar **args, gchar **error, void *data) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5211 PurpleAccount *account = purple_conversation_get_account(c);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5212
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5213 if (*args && args[0])
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5214 return PURPLE_CMD_RET_FAILED;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5215
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5216 purple_prpl_send_attention(account->gc, c->name, YAHOO_BUZZ);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5217
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5218 return PURPLE_CMD_RET_OK;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5219 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5220
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5221 PurpleCmdRet
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5222 yahoopurple_cmd_chat_join(PurpleConversation *conv, const char *cmd,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5223 char **args, char **error, void *data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5224 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5225 GHashTable *comp;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5226 PurpleConnection *gc;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5227
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5228 if (!args || !args[0])
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5229 return PURPLE_CMD_RET_FAILED;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5230
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5231 gc = purple_conversation_get_gc(conv);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5232 purple_debug_info("yahoo", "Trying to join %s \n", args[0]);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5233
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5234 comp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5235 g_hash_table_replace(comp, g_strdup("room"), g_ascii_strdown(args[0], -1));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5236 g_hash_table_replace(comp, g_strdup("type"), g_strdup("Chat"));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5237
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5238 yahoo_c_join(gc, comp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5239
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5240 g_hash_table_destroy(comp);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5241 return PURPLE_CMD_RET_OK;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5242 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5243
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5244 PurpleCmdRet
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5245 yahoopurple_cmd_chat_list(PurpleConversation *conv, const char *cmd,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5246 char **args, char **error, void *data)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5247 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5248 PurpleAccount *account = purple_conversation_get_account(conv);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5249 if (*args && args[0])
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5250 return PURPLE_CMD_RET_FAILED;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5251 purple_roomlist_show_with_account(account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5252 return PURPLE_CMD_RET_OK;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5253 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5254
27400
31534ae3406a Moved functions around and made some no longer static. All the functions
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27398
diff changeset
5255 gboolean yahoo_offline_message(const PurpleBuddy *buddy)
27394
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5256 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5257 return TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5258 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5259
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5260 gboolean yahoo_send_attention(PurpleConnection *gc, const char *username, guint type)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5261 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5262 PurpleConversation *c;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5263
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5264 c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5265 username, gc->account);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5266
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5267 g_return_val_if_fail(c != NULL, FALSE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5268
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5269 purple_debug_info("yahoo", "Sending <ding> on account %s to buddy %s.\n",
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5270 username, c->name);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5271 purple_conv_im_send_with_flags(PURPLE_CONV_IM(c), "<ding>", PURPLE_MESSAGE_INVISIBLE);
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5272
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5273 return TRUE;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5274 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5275
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5276 GList *yahoo_attention_types(PurpleAccount *account)
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5277 {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5278 static GList *list = NULL;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5279
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5280 if (!list) {
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5281 /* Yahoo only supports one attention command: the 'buzz'. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5282 /* This is index number YAHOO_BUZZ. */
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5283 list = g_list_append(list, purple_attention_type_new("Buzz", _("Buzz"),
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5284 _("%s has buzzed you!"), _("Buzzing %s...")));
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5285 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5286
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5287 return list;
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5288 }
16ef6a9e7acd Start of splitting yahoo into two separate prpls. Not sure if this even comes
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
5289