libpurple/protocols/yahoo/yahoo_picture.c

Thu, 19 Jun 2008 02:54:25 +0000

author
Daniel Atallah <datallah@pidgin.im>
date
Thu, 19 Jun 2008 02:54:25 +0000
branch
release-2.4.3
changeset 23156
8db1bdbe418a
parent 23073
e731fbd84c71
child 23170
456cbed76e54
permissions
-rw-r--r--

applied changes from 980e5e2fedd41d52ed3f1640268e8964d4b02cde
through 7a490c356e10f7fff3432f875897aa0ca0ad1ff0

9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * purple
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
6 * source distribution.
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
7 *
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
12 *
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
17 *
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18552
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
21 *
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
22 */
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
23
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
24 #include "internal.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
25
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
26 #include "account.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
27 #include "accountopt.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
28 #include "blist.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
29 #include "debug.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
30 #include "prpl.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
31 #include "proxy.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
32 #include "util.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
33
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
34 #include "yahoo.h"
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10111
diff changeset
35 #include "yahoo_packet.h"
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
36 #include "yahoo_friend.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
37 #include "yahoo_picture.h"
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
38
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
39
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
40 struct yahoo_fetch_picture_data {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
41 PurpleConnection *gc;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
42 char *who;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
43 int checksum;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
44 };
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
45
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
46 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
47 yahoo_fetch_picture_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
48 const gchar *pic_data, size_t len, const gchar *error_message)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
49 {
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
50 struct yahoo_fetch_picture_data *d;
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
51 struct yahoo_data *yd;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
52
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
53 d = user_data;
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
54 yd = d->gc->proto_data;
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
55 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
56
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
57 if (error_message != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
58 purple_debug_error("yahoo", "Fetching buddy icon failed: %s\n", error_message);
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
59 } else if (len == 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
60 purple_debug_error("yahoo", "Fetched an icon with length 0. Strange.\n");
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
61 } else {
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
62 char *checksum = g_strdup_printf("%i", d->checksum);
16539
75a20ae3a527 Change the imgstore and by extension, then the buddy icon code to take over
Richard Laager <rlaager@pidgin.im>
parents: 16538
diff changeset
63 purple_buddy_icons_set_for_user(purple_connection_get_account(d->gc), d->who, g_memdup(pic_data, len), len, checksum);
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
64 g_free(checksum);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
65 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
66
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
67 g_free(d->who);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
68 g_free(d);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
69 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
70
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
71 void yahoo_process_picture(PurpleConnection *gc, struct yahoo_packet *pkt)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
72 {
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
73 struct yahoo_data *yd;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
74 GSList *l = pkt->hash;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
75 char *who = NULL, *us = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
76 gboolean got_icon_info = FALSE, send_icon_info = FALSE;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
77 char *url = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
78 int checksum = 0;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
79
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
80 while (l) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
81 struct yahoo_pair *pair = l->data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
82
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
83 switch (pair->key) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
84 case 1:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
85 case 4:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
86 who = pair->value;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
87 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
88 case 5:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
89 us = pair->value;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
90 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
91 case 13: {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
92 int tmp;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
93 tmp = strtol(pair->value, NULL, 10);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
94 if (tmp == 1) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
95 send_icon_info = TRUE;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
96 } else if (tmp == 2) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
97 got_icon_info = TRUE;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
98 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
99 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
100 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
101 case 20:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
102 url = pair->value;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
103 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
104 case 192:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
105 checksum = strtol(pair->value, NULL, 10);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
106 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
107 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
108
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
109 l = l->next;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
110 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
111
9675
127db3bbb4f2 [gaim-migrate @ 10527]
Peter Lawler <pidgin@bleeter.id.au>
parents: 9329
diff changeset
112 /* Yahoo IM 6 spits out 0.png as the URL if the buddy icon is not set */
18552
810a338ef085 Use the glib strcasecmp functions everywhere, as we've had reports of
Richard Laager <rlaager@pidgin.im>
parents: 17151
diff changeset
113 if (who && got_icon_info && url && !g_ascii_strncasecmp(url, "http://", 7)) {
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
114 /* TODO: make this work p2p, try p2p before the url */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
115 PurpleUtilFetchUrlData *url_data;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
116 struct yahoo_fetch_picture_data *data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
117 PurpleBuddy *b = purple_find_buddy(gc->account, who);
16606
b31fca4f6f60 Thanks to Bleeter, yahoo will not crash for non-existent buddyicons anymore.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16539
diff changeset
118 const char *locksum = NULL;
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
119 gboolean use_whole_url = FALSE;
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
120
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
121 /* use whole URL if using HTTP Proxy */
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
122 if ((gc->account->proxy_info) && (gc->account->proxy_info->type == PURPLE_PROXY_HTTP))
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
123 use_whole_url = TRUE;
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
124
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
125 /* FIXME: Cleanup this strtol() stuff if possible. */
16606
b31fca4f6f60 Thanks to Bleeter, yahoo will not crash for non-existent buddyicons anymore.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16539
diff changeset
126 if (b && (locksum = purple_buddy_icons_get_checksum_for_user(b)) != NULL &&
b31fca4f6f60 Thanks to Bleeter, yahoo will not crash for non-existent buddyicons anymore.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16539
diff changeset
127 (checksum == strtol(locksum, NULL, 10)))
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
128 return;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
129
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
130 data = g_new0(struct yahoo_fetch_picture_data, 1);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
131 data->gc = gc;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
132 data->who = g_strdup(who);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
133 data->checksum = checksum;
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
134 url_data = purple_util_fetch_url(url, use_whole_url,
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
135 "Mozilla/4.0 (compatible; MSIE 5.0)", FALSE,
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
136 yahoo_fetch_picture_cb, data);
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
137 if (url_data != NULL) {
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
138 yd = gc->proto_data;
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
139 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14321
diff changeset
140 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
141 } else if (who && send_icon_info) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
142 yahoo_send_picture_info(gc, who);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
143 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
144 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
145
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
146 void yahoo_process_picture_update(PurpleConnection *gc, struct yahoo_packet *pkt)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
147 {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
148 GSList *l = pkt->hash;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
149 char *who = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
150 int icon = 0;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
151
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
152 while (l) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
153 struct yahoo_pair *pair = l->data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
154
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
155 switch (pair->key) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
156 case 4:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
157 who = pair->value;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
158 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
159 case 5:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
160 /* us */
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
161 break;
17151
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
162 /* NOTE: currently the server seems to only send 213; 206 was used
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
163 * in older versions. Check whether it's still needed. */
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
164 case 206:
17151
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
165 case 213:
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
166 icon = strtol(pair->value, NULL, 10);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
167 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
168 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
169 l = l->next;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
170 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
171
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
172 if (who) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
173 if (icon == 2)
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
174 yahoo_send_picture_request(gc, who);
9322
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
175 else if ((icon == 0) || (icon == 1)) {
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9322
diff changeset
176 YahooFriend *f;
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
177 purple_buddy_icons_set_for_user(gc->account, who, NULL, 0, NULL);
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9322
diff changeset
178 if ((f = yahoo_friend_find(gc, who)))
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9322
diff changeset
179 yahoo_friend_set_buddy_icon_need_request(f, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
180 purple_debug_misc("yahoo", "Setting user %s's icon to NULL.\n", who);
9322
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
181 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
182 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
183 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
184
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
185 void yahoo_process_picture_checksum(PurpleConnection *gc, struct yahoo_packet *pkt)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
186 {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
187 GSList *l = pkt->hash;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
188 char *who = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
189 int checksum = 0;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
190
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
191 while (l) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
192 struct yahoo_pair *pair = l->data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
193
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
194 switch (pair->key) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
195 case 4:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
196 who = pair->value;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
197 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
198 case 5:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
199 /* us */
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
200 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
201 case 192:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
202 checksum = strtol(pair->value, NULL, 10);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
203 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
204 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
205 l = l->next;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
206 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
207
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
208 if (who) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
209 PurpleBuddy *b = purple_find_buddy(gc->account, who);
16606
b31fca4f6f60 Thanks to Bleeter, yahoo will not crash for non-existent buddyicons anymore.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16539
diff changeset
210 const char *locksum = NULL;
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
211
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
212 /* FIXME: Cleanup this strtol() stuff if possible. */
17151
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
213 if (b) {
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
214 locksum = purple_buddy_icons_get_checksum_for_user(b);
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
215 if (!locksum || (checksum != strtol(locksum, NULL, 10)))
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
216 yahoo_send_picture_request(gc, who);
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 16757
diff changeset
217 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
218 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
219 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
220
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
221 void yahoo_process_picture_upload(PurpleConnection *gc, struct yahoo_packet *pkt)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
222 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
223 PurpleAccount *account = purple_connection_get_account(gc);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
224 struct yahoo_data *yd = gc->proto_data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
225 GSList *l = pkt->hash;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
226 char *url = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
227
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
228 while (l) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
229 struct yahoo_pair *pair = l->data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
230
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
231 switch (pair->key) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
232 case 5:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
233 /* us */
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
234 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
235 case 27:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
236 /* filename on our computer. */
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
237 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
238 case 20: /* url at yahoo */
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
239 url = pair->value;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
240 case 38: /* timestamp */
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
241 break;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
242 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
243 l = l->next;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
244 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
245
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
246 if (url) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
247 if (yd->picture_url)
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
248 g_free(yd->picture_url);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
249 yd->picture_url = g_strdup(url);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
250 purple_account_set_string(account, YAHOO_PICURL_SETTING, url);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
251 purple_account_set_int(account, YAHOO_PICCKSUM_SETTING, yd->picture_checksum);
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
252 yahoo_send_picture_update(gc, 2);
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
253 yahoo_send_picture_checksum(gc);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
254 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
255 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
256
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
257 void yahoo_process_avatar_update(PurpleConnection *gc, struct yahoo_packet *pkt)
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
258 {
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
259 GSList *l = pkt->hash;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
260 char *who = NULL;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
261 int avatar = 0;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
262
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
263 while (l) {
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
264 struct yahoo_pair *pair = l->data;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
265
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
266 switch (pair->key) {
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
267 case 4:
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
268 who = pair->value;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
269 break;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
270 case 5:
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
271 /* us */
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
272 break;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
273 case 206:
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
274 /*
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
275 * 0 - No icon or avatar
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
276 * 1 - Using an avatar
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
277 * 2 - Using an icon
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
278 */
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
279 avatar = strtol(pair->value, NULL, 10);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
280 break;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
281 }
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
282 l = l->next;
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
283 }
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
284
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
285 if (who) {
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
286 if (avatar == 2)
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
287 yahoo_send_picture_request(gc, who);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
288 else if ((avatar == 0) || (avatar == 1)) {
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
289 YahooFriend *f;
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16076
diff changeset
290 purple_buddy_icons_set_for_user(gc->account, who, NULL, 0, NULL);
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
291 if ((f = yahoo_friend_find(gc, who)))
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
292 yahoo_friend_set_buddy_icon_need_request(f, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
293 purple_debug_misc("yahoo", "Setting user %s's icon to NULL.\n", who);
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
294 }
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
295 }
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
296 }
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13277
diff changeset
297
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
298 void yahoo_send_picture_info(PurpleConnection *gc, const char *who)
9322
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
299 {
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
300 struct yahoo_data *yd = gc->proto_data;
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
301 struct yahoo_packet *pkt;
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
302
9329
443126edd567 [gaim-migrate @ 10137]
Tim Ringenbach <marv@pidgin.im>
parents: 9325
diff changeset
303 if (!yd->picture_url) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
304 purple_debug_warning("yahoo", "Attempted to send picture info without a picture\n");
9322
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
305 return;
9329
443126edd567 [gaim-migrate @ 10137]
Tim Ringenbach <marv@pidgin.im>
parents: 9325
diff changeset
306 }
9322
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
307
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
308 pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
309 yahoo_packet_hash(pkt, "sssssi", 1, purple_connection_get_display_name(gc),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
310 4, purple_connection_get_display_name(gc), 5, who,
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
311 13, "2", 20, yd->picture_url, 192, yd->picture_checksum);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10111
diff changeset
312 yahoo_packet_send_and_free(pkt, yd);
9322
d3be9630aaf1 [gaim-migrate @ 10130]
Tim Ringenbach <marv@pidgin.im>
parents: 9310
diff changeset
313 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
314
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
315 void yahoo_send_picture_request(PurpleConnection *gc, const char *who)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
316 {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
317 struct yahoo_data *yd = gc->proto_data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
318 struct yahoo_packet *pkt;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
319
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
320 pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
321 yahoo_packet_hash_str(pkt, 4, purple_connection_get_display_name(gc)); /* me */
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
322 yahoo_packet_hash_str(pkt, 5, who); /* the other guy */
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
323 yahoo_packet_hash_str(pkt, 13, "1"); /* 1 = request, 2 = reply */
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10111
diff changeset
324 yahoo_packet_send_and_free(pkt, yd);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
325 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
326
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
327 void yahoo_send_picture_checksum(PurpleConnection *gc)
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
328 {
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
329 struct yahoo_data *yd = gc->proto_data;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
330 struct yahoo_packet *pkt;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
331
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
332 pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE_CHECKSUM, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
333 yahoo_packet_hash(pkt, "ssi", 1, purple_connection_get_display_name(gc),
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
334 212, "1", 192, yd->picture_checksum);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10111
diff changeset
335 yahoo_packet_send_and_free(pkt, yd);
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
336 }
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
337
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
338 void yahoo_send_picture_update_to_user(PurpleConnection *gc, const char *who, int type)
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
339 {
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
340 struct yahoo_data *yd = gc->proto_data;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
341 struct yahoo_packet *pkt;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
342
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
343 pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE_UPDATE, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
344 yahoo_packet_hash(pkt, "ssi", 1, purple_connection_get_display_name(gc), 5, who, 206, type);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10111
diff changeset
345 yahoo_packet_send_and_free(pkt, yd);
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
346 }
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
347
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
348 struct yspufe {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
349 PurpleConnection *gc;
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
350 int type;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
351 };
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
352
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
353 static void yahoo_send_picture_update_foreach(gpointer key, gpointer value, gpointer data)
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
354 {
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
355 const char *who = key;
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
356 YahooFriend *f = value;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
357 struct yspufe *d = data;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
358
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
359 if (f->status != YAHOO_STATUS_OFFLINE)
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
360 yahoo_send_picture_update_to_user(d->gc, who, d->type);
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
361 }
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
362
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
363 void yahoo_send_picture_update(PurpleConnection *gc, int type)
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
364 {
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
365 struct yahoo_data *yd = gc->proto_data;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
366 struct yspufe data;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
367
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
368 data.gc = gc;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
369 data.type = type;
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
370
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
371 g_hash_table_foreach(yd->friends, yahoo_send_picture_update_foreach, &data);
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
372 }
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
373
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
374 void yahoo_buddy_icon_upload_data_free(struct yahoo_buddy_icon_upload_data *d)
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
375 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
376 purple_debug_misc("yahoo", "In yahoo_buddy_icon_upload_data_free()\n");
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
377
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
378 if (d->str)
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
379 g_string_free(d->str, TRUE);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
380 g_free(d->filename);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
381 if (d->watcher)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
382 purple_input_remove(d->watcher);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
383 if (d->fd != -1)
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
384 close(d->fd);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
385 g_free(d);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
386 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
387
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
388 /* we couldn't care less about the server's response, but yahoo gets grumpy if we close before it sends it */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
389 static void yahoo_buddy_icon_upload_reading(gpointer data, gint source, PurpleInputCondition condition)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
390 {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
391 struct yahoo_buddy_icon_upload_data *d = data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
392 PurpleConnection *gc = d->gc;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
393 char buf[1024];
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
394 int ret;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
395
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
396 if (!PURPLE_CONNECTION_IS_VALID(gc)) {
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
397 yahoo_buddy_icon_upload_data_free(d);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
398 return;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
399 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
400
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
401 ret = read(d->fd, buf, sizeof(buf));
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
402
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
403 if (ret < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
404 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
405 else if (ret <= 0)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
406 yahoo_buddy_icon_upload_data_free(d);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
407 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
408
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
409 static void yahoo_buddy_icon_upload_pending(gpointer data, gint source, PurpleInputCondition condition)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
410 {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
411 struct yahoo_buddy_icon_upload_data *d = data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
412 PurpleConnection *gc = d->gc;
23073
e731fbd84c71 Use gssize instead of ssize_t as the latter isn't available everywhere.
Daniel Atallah <datallah@pidgin.im>
parents: 22145
diff changeset
413 gssize wrote;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
414
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
415 if (!PURPLE_CONNECTION_IS_VALID(gc)) {
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
416 yahoo_buddy_icon_upload_data_free(d);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
417 return;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
418 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
419
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
420 wrote = write(d->fd, d->str->str + d->pos, d->str->len - d->pos);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
421 if (wrote < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
422 return;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
423 if (wrote <= 0) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
424 yahoo_buddy_icon_upload_data_free(d);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
425 return;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
426 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
427 d->pos += wrote;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
428 if (d->pos >= d->str->len) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
429 purple_debug_misc("yahoo", "Finished uploading buddy icon.\n");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
430 purple_input_remove(d->watcher);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
431 d->watcher = purple_input_add(d->fd, PURPLE_INPUT_READ, yahoo_buddy_icon_upload_reading, d);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
432 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
433 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
434
14182
517f4531b8a0 [gaim-migrate @ 16754]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
435 static void yahoo_buddy_icon_upload_connected(gpointer data, gint source, const gchar *error_message)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
436 {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
437 struct yahoo_buddy_icon_upload_data *d = data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
438 struct yahoo_packet *pkt;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
439 gchar *size, *header;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
440 guchar *pkt_buf;
10576
ce7a6c585bc6 [gaim-migrate @ 11970]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10394
diff changeset
441 const char *host;
13272
fd4f3356640f [gaim-migrate @ 15637]
Daniel Atallah <datallah@pidgin.im>
parents: 13201
diff changeset
442 int port;
13277
c8a85dd74704 [gaim-migrate @ 15642]
Richard Laager <rlaager@pidgin.im>
parents: 13272
diff changeset
443 size_t content_length, pkt_buf_len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
444 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
445 PurpleAccount *account;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
446 struct yahoo_data *yd;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
447
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
448 gc = d->gc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
449 account = purple_connection_get_account(gc);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
450 yd = gc->proto_data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
451
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
452 /* Buddy icon connect is now complete; clear the PurpleProxyConnectData */
14693
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
453 yd->buddy_icon_connect_data = NULL;
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
454
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
455 if (source < 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
456 purple_debug_error("yahoo", "Buddy icon upload failed: %s\n", error_message);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
457 yahoo_buddy_icon_upload_data_free(d);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
458 return;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
459 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
460
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
461 pkt = yahoo_packet_new(0xc2, YAHOO_STATUS_AVAILABLE, yd->session_id);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
462
10111
61dd88113afc [gaim-migrate @ 11144]
Nathan Walp <nwalp@pidgin.im>
parents: 9779
diff changeset
463 size = g_strdup_printf("%" G_GSIZE_FORMAT, d->str->len);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
464 /* 1 = me, 38 = expire time(?), 0 = me, 28 = size, 27 = filename, 14 = NULL, 29 = data */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
465 yahoo_packet_hash_str(pkt, 1, purple_connection_get_display_name(gc));
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
466 yahoo_packet_hash_str(pkt, 38, "604800"); /* time til expire */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
467 purple_account_set_int(account, YAHOO_PICEXPIRE_SETTING, time(NULL) + 604800);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
468 yahoo_packet_hash_str(pkt, 0, purple_connection_get_display_name(gc));
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
469 yahoo_packet_hash_str(pkt, 28, size);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
470 g_free(size);
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
471 yahoo_packet_hash_str(pkt, 27, d->filename);
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
472 yahoo_packet_hash_str(pkt, 14, "");
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
473
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
474 content_length = YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
475
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
476 host = purple_account_get_string(account, "xfer_host", YAHOO_XFER_HOST);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
477 port = purple_account_get_int(account, "xfer_port", YAHOO_XFER_PORT);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
478 header = g_strdup_printf(
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
479 "POST http://%s:%d/notifyft HTTP/1.0\r\n"
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
480 "Content-length: %" G_GSIZE_FORMAT "\r\n"
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
481 "Host: %s:%d\r\n"
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
482 "Cookie: Y=%s; T=%s\r\n"
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
483 "\r\n",
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
484 host, port, content_length + 4 + d->str->len,
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
485 host, port, yd->cookie_y, yd->cookie_t);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
486
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
487 /* There's no magic here, we just need to prepend in reverse order */
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
488 g_string_prepend(d->str, "29\xc0\x80");
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
489
14508
02d80a119d80 [gaim-migrate @ 17160]
Evan Schoenberg <evands@pidgin.im>
parents: 14416
diff changeset
490 pkt_buf_len = yahoo_packet_build(pkt, 8, FALSE, yd->jp, &pkt_buf);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
491 yahoo_packet_free(pkt);
14321
21c565de27ea [gaim-migrate @ 16941]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
492 g_string_prepend_len(d->str, (char *)pkt_buf, pkt_buf_len);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
493 g_free(pkt_buf);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
494
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
495 g_string_prepend(d->str, header);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
496 g_free(header);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
497
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
498 d->fd = source;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
499 d->watcher = purple_input_add(d->fd, PURPLE_INPUT_WRITE, yahoo_buddy_icon_upload_pending, d);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12412
diff changeset
500
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
501 yahoo_buddy_icon_upload_pending(d, d->fd, PURPLE_INPUT_WRITE);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
502 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
503
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
504 void yahoo_buddy_icon_upload(PurpleConnection *gc, struct yahoo_buddy_icon_upload_data *d)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
505 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
506 PurpleAccount *account = purple_connection_get_account(gc);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
507 struct yahoo_data *yd = gc->proto_data;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
508
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
509 if (yd->buddy_icon_connect_data != NULL) {
14693
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
510 /* Cancel any in-progress buddy icon upload */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
511 purple_proxy_connect_cancel(yd->buddy_icon_connect_data);
14693
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
512 yd->buddy_icon_connect_data = NULL;
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
513 }
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
514
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
515 yd->buddy_icon_connect_data = purple_proxy_connect(NULL, account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
516 yd->jp ? purple_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
517 : purple_account_get_string(account, "xfer_host", YAHOO_XFER_HOST),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
518 purple_account_get_int(account, "xfer_port", YAHOO_XFER_PORT),
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
519 yahoo_buddy_icon_upload_connected, d);
14693
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
520
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
521 if (yd->buddy_icon_connect_data == NULL)
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
522 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
523 purple_debug_error("yahoo", "Uploading our buddy icon failed to connect.\n");
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
524 yahoo_buddy_icon_upload_data_free(d);
14693
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14686
diff changeset
525 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
526 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
527
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
528 void yahoo_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
529 {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
530 struct yahoo_data *yd = gc->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
531 PurpleAccount *account = gc->account;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
532
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
533 if (img == NULL) {
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
534 g_free(yd->picture_url);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
535 yd->picture_url = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
536
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
537 purple_account_set_string(account, YAHOO_PICURL_SETTING, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
538 purple_account_set_int(account, YAHOO_PICCKSUM_SETTING, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
539 purple_account_set_int(account, YAHOO_PICEXPIRE_SETTING, 0);
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
540 if (yd->logged_in)
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
541 /* Tell everyone we ain't got one no more */
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9306
diff changeset
542 yahoo_send_picture_update(gc, 0);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
543
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
544 } else {
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
545 gconstpointer data = purple_imgstore_get_data(img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
546 size_t len = purple_imgstore_get_size(img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
547 GString *s = g_string_new_len(data, len);
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
548 struct yahoo_buddy_icon_upload_data *d;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
549 int oldcksum = purple_account_get_int(account, YAHOO_PICCKSUM_SETTING, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
550 int expire = purple_account_get_int(account, YAHOO_PICEXPIRE_SETTING, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
551 const char *oldurl = purple_account_get_string(account, YAHOO_PICURL_SETTING, NULL);
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
552 char *iconfile;
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
553
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
554 /* TODO: At some point, it'd be nice to fix this for real, or
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
555 * TODO: at least change it to be something like:
16757
aae5c0ced2da Update the comments about yahoo buddy icons. Only send the filename and not the whole path.
Tim Ringenbach <marv@pidgin.im>
parents: 16606
diff changeset
556 * TODO: purple_imgstore_get_filename(img);
aae5c0ced2da Update the comments about yahoo buddy icons. Only send the filename and not the whole path.
Tim Ringenbach <marv@pidgin.im>
parents: 16606
diff changeset
557 * TODO: But it would be great if we knew how to calculate the
aae5c0ced2da Update the comments about yahoo buddy icons. Only send the filename and not the whole path.
Tim Ringenbach <marv@pidgin.im>
parents: 16606
diff changeset
558 * TODO: Checksum correctly. */
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
559 yd->picture_checksum = g_string_hash(s);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
560
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
561 if ((yd->picture_checksum == oldcksum) &&
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
562 (expire > (time(NULL) + 60*60*24)) && oldurl)
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
563 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
564 purple_debug_misc("yahoo", "buddy icon is up to date. Not reuploading.\n");
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
565 g_string_free(s, TRUE);
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
566 g_free(yd->picture_url);
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
567 yd->picture_url = g_strdup(oldurl);
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
568 return;
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
569 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
570
16757
aae5c0ced2da Update the comments about yahoo buddy icons. Only send the filename and not the whole path.
Tim Ringenbach <marv@pidgin.im>
parents: 16606
diff changeset
571 /* We use this solely for sending a filename to the server */
aae5c0ced2da Update the comments about yahoo buddy icons. Only send the filename and not the whole path.
Tim Ringenbach <marv@pidgin.im>
parents: 16606
diff changeset
572 iconfile = g_strdup(purple_imgstore_get_filename(img));
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
573 d = g_new0(struct yahoo_buddy_icon_upload_data, 1);
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
574 d->gc = gc;
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
575 d->str = s;
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
576 d->fd = -1;
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
577 d->filename = iconfile;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
578
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
579 if (!yd->logged_in) {
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
580 yd->picture_upload_todo = d;
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
581 return;
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
582 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
583
15239
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
584 yahoo_buddy_icon_upload(gc, d);
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
585
f31e2c11334e [gaim-migrate @ 17964]
Mark Doliner <markdoliner@pidgin.im>
parents: 15042
diff changeset
586 }
15245
3abed8bd82fb [gaim-migrate @ 17972]
Mark Doliner <markdoliner@pidgin.im>
parents: 15239
diff changeset
587 }

mercurial