annotate src/protocols/oscar/oscar.c @ 10812:d087e928ffd1

[gaim-migrate @ 12465] " A variety of spacing normalization I've done as I've navigated the source making other changes. The specific changes should be uncontroversial. I'm submitting these to shrink the deltas between my local tree and the CVS source. If spacing changes are unwelcome as a general rule, let me know." --rlaager I said not to do this sort of patch often. also a spelling fix. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Mon, 11 Apr 2005 04:32:26 +0000
parents 4a2f361f49b9
children c94f40ffcafb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 /*
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 * gaim
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4 * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
6302
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
5 * Some code copyright (C) 1999-2001, Eric Warmenhoven
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
6 * Some code copyright (C) 2001-2003, Sean Egan
8151
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
7 * Some code copyright (C) 2001-2004, Mark Doliner <thekingant@users.sourceforge.net>
6302
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
8 *
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
9 * Most libfaim code copyright (C) 1998-2001 Adam Fritzler <afritz@auk.cx>
8151
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
10 * Some libfaim code copyright (C) 2001-2004 Mark Doliner <thekingant@users.sourceforge.net>
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 * (at your option) any later version.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10485
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 * GNU General Public License for more details.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
27 #include "internal.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
28
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
29 #include "account.h"
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
30 #include "accountopt.h"
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
31 #include "buddyicon.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
32 #include "conversation.h"
7083
3100a6e03644 [gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents: 7082
diff changeset
33 #include "core.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
34 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
35 #include "ft.h"
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
36 #include "imgstore.h"
8231
f50c059b6384 [gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents: 8227
diff changeset
37 #include "network.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
38 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
39 #include "privacy.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 #include "prpl.h"
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
41 #include "proxy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
42 #include "request.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
43 #include "util.h"
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
44 #include "version.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
45
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
46 #include "aim.h"
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
47 #include "md5.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
48
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
49 #define OSCAR_STATUS_ID_INVISIBLE "invisible"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
50 #define OSCAR_STATUS_ID_OFFLINE "offline"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
51 #define OSCAR_STATUS_ID_ONLINE "online"
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
52 #define OSCAR_STATUS_ID_AVAILABLE "available"
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
53 #define OSCAR_STATUS_ID_AWAY "away"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
54 #define OSCAR_STATUS_ID_DND "dnd"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
55 #define OSCAR_STATUS_ID_NA "na"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
56 #define OSCAR_STATUS_ID_OCCUPIED "occupied"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
57 #define OSCAR_STATUS_ID_FREE4CHAT "free4chat"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
58 #define OSCAR_STATUS_ID_CUSTOM "custom"
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
59
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
62 #define OSCAR_CONNECT_STEPS 6
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
63 #define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1"
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
64 #define OSCAR_DEFAULT_AUTHORIZATION TRUE
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
65 #define OSCAR_DEFAULT_HIDE_IP TRUE
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
66 #define OSCAR_DEFAULT_WEB_AWARE FALSE
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
67
10329
0ad82da3ffcf [gaim-migrate @ 11536]
Mark Doliner <mark@kingant.net>
parents: 10318
diff changeset
68 #define FAIM_DEBUG_LEVEL 0
0ad82da3ffcf [gaim-migrate @ 11536]
Mark Doliner <mark@kingant.net>
parents: 10318
diff changeset
69
7376
0721e3fe57c9 [gaim-migrate @ 7971]
Mark Doliner <mark@kingant.net>
parents: 7366
diff changeset
70 static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT;
0721e3fe57c9 [gaim-migrate @ 7971]
Mark Doliner <mark@kingant.net>
parents: 7366
diff changeset
71 static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_ICQUTF8 | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT;
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
72
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
73 static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02};
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
74 static fu8_t features_icq[] = {0x01, 0x06};
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
75 static fu8_t ck[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
76
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
77 typedef struct _OscarData OscarData;
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
78 struct _OscarData {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
79 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
80 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
81
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82 guint cnpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83 guint paspa;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
84 guint emlpa;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
85 guint icopa;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
86
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
87 gboolean iconconnecting;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
88 gboolean set_icon;
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
89
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
90 GSList *create_rooms;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
91
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
92 gboolean conf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 gboolean reqemail;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
94 gboolean setemail;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
95 char *email;
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
96 gboolean setnick;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
97 char *newsn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98 gboolean chpass;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99 char *oldp;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
100 char *newp;
9971
ab5db2c5da79 [gaim-migrate @ 10882]
Mark Doliner <mark@kingant.net>
parents: 9948
diff changeset
101
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
102 GSList *oscar_chats;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
103 GSList *direct_ims;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
104 GSList *file_transfers;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
105 GHashTable *buddyinfo;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
106 GSList *requesticon;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
108 gboolean killme;
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
109 gboolean icq;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
110 guint icontimer;
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
111 guint getblisttimer;
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
112 guint getinfotimer;
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
113 gint timeoffset;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
114
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
115 struct {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
116 guint maxwatchers; /* max users who can watch you */
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
117 guint maxbuddies; /* max users you can watch */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
118 guint maxgroups; /* max groups in server list */
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
119 guint maxpermits; /* max users on permit list */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
120 guint maxdenies; /* max users on deny list */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
121 guint maxsiglen; /* max size (bytes) of profile */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
122 guint maxawaymsglen; /* max size (bytes) of posted away message */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
123 } rights;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
124 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
126 struct create_room {
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
127 char *name;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
128 int exchange;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
129 };
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
130
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
131 struct chat_connection {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
132 char *name;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
133 char *show; /* AOL did something funny to us */
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
134 fu16_t exchange;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
135 fu16_t instance;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
136 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
137 int inpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 int id;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
139 GaimConnection *gc; /* i hate this. */
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
140 GaimConversation *conv; /* bah. */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
141 int maxlen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
142 int maxvis;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
143 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
144
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
145 struct oscar_direct_im {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
146 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
147 char name[80];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
148 int watcher;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
149 aim_conn_t *conn;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
150 gboolean connected;
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
151 gboolean gpc_pend;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
152 gboolean killme;
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
153 gboolean donttryagain;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
154 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
155
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156 struct ask_direct {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
157 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
158 char *sn;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
159 char ip[64];
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
160 fu8_t cookie[8];
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
161 gboolean donttryagain;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
162 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
163
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
164 /*
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
165 * Various PRPL-specific buddy info that we want to keep track of
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
166 * Some other info is maintained by locate.c, and I'd like to move
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
167 * the rest of this to libfaim, mostly im.c
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
168 */
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
169 struct buddyinfo {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
170 gboolean typingnot;
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
171 gchar *availmsg;
6857
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
172 fu32_t ipaddr;
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
173
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
174 unsigned long ico_me_len;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
175 unsigned long ico_me_csum;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
176 time_t ico_me_time;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
177 gboolean ico_informed;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
178
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
179 unsigned long ico_len;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
180 unsigned long ico_csum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
181 time_t ico_time;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
182 gboolean ico_need;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
183 gboolean ico_sent;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
184 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
185
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
186 struct name_data {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
187 GaimConnection *gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
188 gchar *name;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
189 gchar *nick;
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
190 };
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
191
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
192 static char *msgerrreason[] = {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
193 N_("Invalid error"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
194 N_("Invalid SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
195 N_("Rate to host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
196 N_("Rate to client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
197 N_("Not logged in"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
198 N_("Service unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
199 N_("Service not defined"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
200 N_("Obsolete SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
201 N_("Not supported by host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
202 N_("Not supported by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
203 N_("Refused by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
204 N_("Reply too big"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
205 N_("Responses lost"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
206 N_("Request denied"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
207 N_("Busted SNAC payload"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
208 N_("Insufficient rights"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
209 N_("In local permit/deny"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
210 N_("Too evil (sender)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
211 N_("Too evil (receiver)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
212 N_("User temporarily unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
213 N_("No match"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
214 N_("List overflow"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
215 N_("Request ambiguous"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
216 N_("Queue full"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
217 N_("Not while on AOL")
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
218 };
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
219 static int msgerrreasonlen = 25;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
220
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
221 /* All the libfaim->gaim callback functions */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
222 static int gaim_parse_auth_resp (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
223 static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...);
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
224 static int gaim_parse_auth_securid_request(aim_session_t *, aim_frame_t *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
225 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
226 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
227 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
228 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
229 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
230 static int gaim_parse_incoming_im(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
231 static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
232 static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
233 static int gaim_parse_userinfo (aim_session_t *, aim_frame_t *, ...);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
234 static int gaim_reqinfo_timeout (aim_session_t *, aim_frame_t *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
235 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
236 static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
237 static int gaim_conv_chat_join (aim_session_t *, aim_frame_t *, ...);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
238 static int gaim_conv_chat_leave (aim_session_t *, aim_frame_t *, ...);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
239 static int gaim_conv_chat_info_update (aim_session_t *, aim_frame_t *, ...);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
240 static int gaim_conv_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
241 static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
242 static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
243 static int gaim_icon_parseicon (aim_session_t *, aim_frame_t *, ...);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
244 static int oscar_icon_req (aim_session_t *, aim_frame_t *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
245 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
246 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
247 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
248 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
249 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
250 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
251 static int gaim_connerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
252 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
253 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
254 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
255 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
256 static int conninitdone_email (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
257 static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
258 static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
259 static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
260 static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
261 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
262 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
263 static int gaim_icbm_param_info (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
264 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
265 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
266 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
267 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
268 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
269 static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
270 static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
271 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
272 #ifndef NOSSI
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
273 static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
274 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
275 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
276 static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...);
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
277 static int gaim_ssi_parseadd (aim_session_t *, aim_frame_t *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
278 static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
279 static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
280 static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
281 static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
282 #endif
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
283
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
284 /* for DirectIM/image transfer */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
285 static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
286 static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
287 static int gaim_odc_typing (aim_session_t *, aim_frame_t *, ...);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
288 static int gaim_odc_update_ui (aim_session_t *, aim_frame_t *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
289
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
290 /* for file transfer */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
291 static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
292 static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
293 static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
294 static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
295
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
296 static gboolean gaim_icon_timerfunc(gpointer data);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
297 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition);
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
298 static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const char *cookie);
5954
fccc33d4b8fa [gaim-migrate @ 6398]
Mark Doliner <mark@kingant.net>
parents: 5948
diff changeset
299 static void oscar_set_info(GaimConnection *gc, const char *text);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
300 static void recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
301
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
302 static void oscar_free_name_data(struct name_data *data) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
303 g_free(data->name);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
304 g_free(data->nick);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
305 g_free(data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
306 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
307
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
308 static void oscar_free_buddyinfo(void *data) {
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
309 struct buddyinfo *bi = data;
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
310 g_free(bi->availmsg);
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
311 g_free(bi);
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
312 }
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
313
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
314 static fu32_t oscar_charset_check(const char *utf8)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
315 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
316 int i = 0;
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
317 int charset = AIM_CHARSET_ASCII;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
318
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
319 /* Determine how we can send this message. Per the warnings elsewhere
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
320 * in this file, these little checks determine the simplest encoding
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
321 * we can use for a given message send using it. */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
322 while (utf8[i]) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
323 if ((unsigned char)utf8[i] > 0x7f) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
324 /* not ASCII! */
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
325 charset = AIM_CHARSET_CUSTOM;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
326 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
327 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
328 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
329 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
330 while (utf8[i]) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
331 /* ISO-8859-1 is 0x00-0xbf in the first byte
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
332 * followed by 0xc0-0xc3 in the second */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
333 if ((unsigned char)utf8[i] < 0x80) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
334 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
335 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
336 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
337 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
338 i += 2;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
339 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
340 }
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
341 charset = AIM_CHARSET_UNICODE;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
342 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
343 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
344
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
345 return charset;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
346 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
347
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
348 /*
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
349 * Take a string of the form charset="bleh" where bleh is
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
350 * one of us-ascii, utf-8, iso-8859-1, or unicode-2-0, and
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
351 * return a newly allocated string containing bleh.
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
352 */
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
353 static gchar *oscar_encoding_extract(const char *encoding)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
354 {
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
355 gchar *ret = NULL;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
356 char *begin, *end;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
357
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
358 g_return_val_if_fail(encoding != NULL, NULL);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
359
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
360 /* Make sure encoding begins with charset= */
10540
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
361 if (strncmp(encoding, "text/aolrtf; charset=", 21) &&
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
362 strncmp(encoding, "text/x-aolrtf; charset=", 23))
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
363 {
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
364 return NULL;
10540
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
365 }
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
366
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
367 begin = strchr(encoding, '"');
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
368 end = strrchr(encoding, '"');
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
369
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
370 if ((begin == NULL) || (end == NULL) || (begin >= end))
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
371 return NULL;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
372
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
373 ret = g_strndup(begin+1, (end-1) - begin);
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
374
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
375 return ret;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
376 }
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
377
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
378 static gchar *
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
379 oscar_encoding_to_utf8(const char *encoding, const char *text, int textlen)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
380 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
381 gchar *utf8 = NULL;
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
382
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
383 if ((encoding == NULL) || encoding[0] == '\0') {
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
384 gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n");
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
385 } else if (!strcasecmp(encoding, "iso-8859-1")) {
10376
7196933335d9 [gaim-migrate @ 11601]
Sean Egan <seanegan@gmail.com>
parents: 10375
diff changeset
386 utf8 = g_convert(text, textlen, "UTF-8", "iso-8859-1", NULL, NULL, NULL);
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
387 } else if (!strcasecmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1")) {
10375
cbfd90f7fa47 [gaim-migrate @ 11600]
Sean Egan <seanegan@gmail.com>
parents: 10329
diff changeset
388 utf8 = g_convert(text, textlen, "UTF-8", "Windows-1252", NULL, NULL, NULL);
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
389 } else if (!strcasecmp(encoding, "unicode-2-0")) {
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
390 utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL);
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
391 } else if (strcasecmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) {
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
392 gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", "
10096
2923a6c59192 [gaim-migrate @ 11118]
Mark Doliner <mark@kingant.net>
parents: 10087
diff changeset
393 "attempting to convert to UTF-8 anyway\n", encoding);
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
394 utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL);
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
395 }
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
396
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
397 /*
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
398 * If utf8 is still NULL then either the encoding is us-ascii/utf-8 or
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
399 * we have been unable to convert the text to utf-8 from the encoding
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
400 * that was specified. So we check if the text is valid utf-8 then
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
401 * just copy it.
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
402 */
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
403 if (utf8 == NULL) {
9638
201c8fe4cee3 [gaim-migrate @ 10486]
Ethan Blanton <elb@pidgin.im>
parents: 9634
diff changeset
404 if (textlen != 0 && *text != '\0'
201c8fe4cee3 [gaim-migrate @ 10486]
Ethan Blanton <elb@pidgin.im>
parents: 9634
diff changeset
405 && !g_utf8_validate(text, textlen, NULL))
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
406 utf8 = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)"));
9476
4d39f4d1034b [gaim-migrate @ 10301]
Ethan Blanton <elb@pidgin.im>
parents: 9475
diff changeset
407 else
9481
683660b4efeb [gaim-migrate @ 10306]
Ethan Blanton <elb@pidgin.im>
parents: 9476
diff changeset
408 utf8 = g_strndup(text, textlen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
409 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
410
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
411 return utf8;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
412 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
413
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
414 static gchar *
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
415 gaim_plugin_oscar_convert_to_utf8(const fu8_t *data, fu16_t datalen, const char *charsetstr, gboolean fallback)
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
416 {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
417 gchar *ret = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
418 GError *err = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
419
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
420 if ((charsetstr == NULL) || (*charsetstr == '\0'))
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
421 return NULL;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
422
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
423 if (strcasecmp("UTF-8", charsetstr)) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
424 if (fallback)
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
425 ret = g_convert_with_fallback(data, datalen, "UTF-8", charsetstr, "?", NULL, NULL, &err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
426 else
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
427 ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
428 if (err != NULL) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
429 gaim_debug_warning("oscar", "Conversation from %s failed: %s.\n",
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
430 charsetstr, err->message);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
431 g_error_free(err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
432 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
433 } else {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
434 if (g_utf8_validate(data, datalen, NULL))
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
435 ret = g_strndup(data, datalen);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
436 else
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
437 gaim_debug_warning("oscar", "String is not valid UTF-8.\n");
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
438 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
439
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
440 return ret;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
441 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
442
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
443 /*
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
444 * We try decoding using two different character sets. The charset
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
445 * specified in the IM determines the order in which we attempt to
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
446 * decode. We do this because there are lots of broken ICQ clients
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
447 * that don't correctly send non-ASCII messages. And if Gaim isn't
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
448 * able to deal with that crap, then people complain like banshees.
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
449 * charsetstr1 is always set to what the correct encoding should be.
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
450 */
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
451 static gchar *
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
452 gaim_plugin_oscar_decode_im_part(GaimAccount *account, const char *sourcesn, fu16_t charset, fu16_t charsubset, fu8_t *data, fu16_t datalen)
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
453 {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
454 gchar *ret = NULL;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
455 const gchar *charsetstr1, *charsetstr2;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
456
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
457 gaim_debug_info("oscar", "Parsing IM part, charset=0x%04hx, charsubset=0x%04hx, datalen=%hd\n", charset, charsubset, datalen);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
458
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
459 if ((datalen == 0) || (data == NULL))
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
460 return NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
461
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
462 if (charset == AIM_CHARSET_UNICODE) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
463 charsetstr1 = "UCS-2BE";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
464 charsetstr2 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
465 } else if (charset == AIM_CHARSET_CUSTOM) {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
466 if ((sourcesn != NULL) && aim_sn_is_icq(sourcesn))
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
467 charsetstr1 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
468 else
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
469 charsetstr1 = "ISO-8859-1";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
470 charsetstr2 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
471 } else if (charset == AIM_CHARSET_ASCII) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
472 /* Should just be "ASCII" */
9914
3df9ffcb9b06 [gaim-migrate @ 10806]
Mark Doliner <mark@kingant.net>
parents: 9908
diff changeset
473 charsetstr1 = "ASCII";
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
474 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
475 } else if (charset == 0x000d) {
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
476 /* Mobile AIM client on a Nokia 3100 and an LG VX6000 */
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
477 charsetstr1 = "ISO-8859-1";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
478 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
479 } else {
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
480 /* Unknown, hope for valid UTF-8... */
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
481 charsetstr1 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
482 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
483 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
484
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
485 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr1, FALSE);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
486 if (ret == NULL)
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
487 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr2, TRUE);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
488 if (ret == NULL)
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
489 ret = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)"));
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
490
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
491 return ret;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
492 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
493
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
494 static void
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
495 gaim_plugin_oscar_convert_to_best_encoding(GaimConnection *gc, const char *destsn, const gchar *from,
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
496 gchar **msg, int *msglen_int,
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
497 fu16_t *charset, fu16_t *charsubset)
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
498 {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
499 OscarData *od = gc->proto_data;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
500 GaimAccount *account = gaim_connection_get_account(gc);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
501 GError *err = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
502 aim_userinfo_t *userinfo = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
503 const gchar *charsetstr;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
504 gsize msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
505
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
506 /* Attempt to send as ASCII */
10098
fb4216714dac [gaim-migrate @ 11120]
Mark Doliner <mark@kingant.net>
parents: 10097
diff changeset
507 if (oscar_charset_check(from) == AIM_CHARSET_ASCII) {
10097
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
508 *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL);
10098
fb4216714dac [gaim-migrate @ 11120]
Mark Doliner <mark@kingant.net>
parents: 10097
diff changeset
509 *charset = AIM_CHARSET_ASCII;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
510 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
511 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
512 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
513 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
514
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
515 /*
10565
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
516 * If we're sending to an ICQ user, and they are in our
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
517 * buddy list, and they are advertising the Unicode
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
518 * capability, and they are online, then attempt to send
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
519 * as UCS-2BE.
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
520 */
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
521 if ((destsn != NULL) && aim_sn_is_icq(destsn))
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
522 userinfo = aim_locate_finduserinfo(od->sess, destsn);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
523
10565
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
524 if ((userinfo != NULL) && (userinfo->capabilities & AIM_CAPS_ICQUTF8))
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
525 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
526 GaimBuddy *b;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
527 b = gaim_find_buddy(account, destsn);
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
528 if ((b != NULL) && (GAIM_BUDDY_IS_ONLINE(b)))
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
529 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
530 *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
531 if (*msg != NULL)
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
532 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
533 *charset = AIM_CHARSET_UNICODE;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
534 *charsubset = 0x0000;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
535 *msglen_int = msglen;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
536 return;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
537 }
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
538 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
539 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
540
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
541 /*
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
542 * If this is AIM then attempt to send as ISO-8859-1. If this is
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
543 * ICQ then attempt to send as the user specified character encoding.
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
544 */
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
545 charsetstr = "ISO-8859-1";
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
546 if ((destsn != NULL) && aim_sn_is_icq(destsn))
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
547 charsetstr = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
548
10097
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
549 /*
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
550 * XXX - We need a way to only attempt to convert if we KNOW "from"
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
551 * can be converted to "charsetstr"
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
552 */
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
553 *msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
554 if (*msg != NULL) {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
555 *charset = AIM_CHARSET_CUSTOM;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
556 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
557 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
558 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
559 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
560
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
561 /*
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
562 * Nothing else worked, so send as UCS-2BE.
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
563 */
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
564 *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, &err);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
565 if (*msg != NULL) {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
566 *charset = AIM_CHARSET_UNICODE;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
567 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
568 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
569 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
570 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
571
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
572 gaim_debug_error("oscar", "Error converting a Unicode message: %s\n", err->message);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
573 g_error_free(err);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
574
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
575 gaim_debug_error("oscar", "This should NEVER happen! Sending UTF-8 text flagged as ASCII.\n");
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
576 *msg = g_strdup(from);
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
577 *msglen_int = strlen(*msg);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
578 *charset = AIM_CHARSET_ASCII;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
579 *charsubset = 0x0000;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
580 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
581 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
582
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
583 gchar *oscar_caps_to_string(guint caps)
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
584 {
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
585 GString *str;
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
586 gchar *tmp;
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
587 guint bit = 1;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
588
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
589 str = g_string_new("");
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
590
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
591 if (!caps) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
592 return NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
593 } else while (bit <= AIM_CAPS_LAST) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
594 if (bit & caps) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
595 switch (bit) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
596 case AIM_CAPS_BUDDYICON:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
597 tmp = _("Buddy Icon");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
598 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
599 case AIM_CAPS_TALK:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
600 tmp = _("Voice");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
601 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
602 case AIM_CAPS_DIRECTIM:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
603 tmp = _("AIM Direct IM");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
604 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
605 case AIM_CAPS_CHAT:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
606 tmp = _("Chat");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
607 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
608 case AIM_CAPS_GETFILE:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
609 tmp = _("Get File");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
610 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
611 case AIM_CAPS_SENDFILE:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
612 tmp = _("Send File");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
613 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
614 case AIM_CAPS_GAMES:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
615 case AIM_CAPS_GAMES2:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
616 tmp = _("Games");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
617 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
618 case AIM_CAPS_ADDINS:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
619 tmp = _("Add-Ins");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
620 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
621 case AIM_CAPS_SENDBUDDYLIST:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
622 tmp = _("Send Buddy List");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
623 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
624 case AIM_CAPS_ICQ_DIRECT:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
625 tmp = _("ICQ Direct Connect");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
626 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
627 case AIM_CAPS_APINFO:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
628 tmp = _("AP User");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
629 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
630 case AIM_CAPS_ICQRTF:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
631 tmp = _("ICQ RTF");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
632 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
633 case AIM_CAPS_EMPTY:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
634 tmp = _("Nihilist");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
635 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
636 case AIM_CAPS_ICQSERVERRELAY:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
637 tmp = _("ICQ Server Relay");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
638 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
639 case AIM_CAPS_ICQUTF8OLD:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
640 tmp = _("Old ICQ UTF8");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
641 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
642 case AIM_CAPS_TRILLIANCRYPT:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
643 tmp = _("Trillian Encryption");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
644 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
645 case AIM_CAPS_ICQUTF8:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
646 tmp = _("ICQ UTF8");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
647 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
648 case AIM_CAPS_HIPTOP:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
649 tmp = _("Hiptop");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
650 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
651 case AIM_CAPS_SECUREIM:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
652 tmp = _("Security Enabled");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
653 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
654 case AIM_CAPS_VIDEO:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
655 tmp = _("Video Chat");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
656 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
657 /* Not actually sure about this one... WinAIM doesn't show anything */
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
658 case AIM_CAPS_ICHATAV:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
659 tmp = _("iChat AV");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
660 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
661 case AIM_CAPS_LIVEVIDEO:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
662 tmp = _("Live Video");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
663 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
664 case AIM_CAPS_CAMERA:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
665 tmp = _("Camera");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
666 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
667 default:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
668 tmp = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
669 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
670 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
671 if (tmp)
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
672 g_string_append_printf(str, "%s%s", (*(str->str) == '\0' ? "" : ", "), tmp);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
673 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
674 bit <<= 1;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
675 }
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
676
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
677 return g_string_free(str, FALSE);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
678 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
679
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
680 static char *oscar_icqstatus(int state) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
681 /* Make a cute little string that shows the status of the dude or dudet */
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
682 if (state & AIM_ICQ_STATE_CHAT)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
683 return g_strdup_printf(_("Free For Chat"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
684 else if (state & AIM_ICQ_STATE_DND)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
685 return g_strdup_printf(_("Do Not Disturb"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
686 else if (state & AIM_ICQ_STATE_OUT)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
687 return g_strdup_printf(_("Not Available"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
688 else if (state & AIM_ICQ_STATE_BUSY)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
689 return g_strdup_printf(_("Occupied"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
690 else if (state & AIM_ICQ_STATE_AWAY)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
691 return g_strdup_printf(_("Away"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
692 else if (state & AIM_ICQ_STATE_WEBAWARE)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
693 return g_strdup_printf(_("Web Aware"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
694 else if (state & AIM_ICQ_STATE_INVISIBLE)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
695 return g_strdup_printf(_("Invisible"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
696 else
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
697 return g_strdup_printf(_("Online"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
698 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
699
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
700 static void
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
701 oscar_string_append(GString *str, const char *newline, const char *name, const char *value)
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
702 {
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
703 gchar *utf8;
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
704
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
705 if (value && value[0] && (utf8 = gaim_utf8_try_convert(value))) {
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
706 g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, utf8);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
707 g_free(utf8);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
708 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
709 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
710
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
711 static void oscar_string_append_info(GaimConnection *gc, GString *str, const char *newline, GaimBuddy *b, aim_userinfo_t *userinfo)
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
712 {
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
713 OscarData *od;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
714 GaimAccount *account;
10517
461334f300d7 [gaim-migrate @ 11821]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10504
diff changeset
715 GaimPresence *presence = NULL;
461334f300d7 [gaim-migrate @ 11821]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10504
diff changeset
716 GaimStatus *status = NULL;
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
717 GaimGroup *g = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
718 struct buddyinfo *bi = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
719 char *tmp;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
720
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
721 od = gc->proto_data;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
722 account = gaim_connection_get_account(gc);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
723
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
724 if ((str == NULL) || (newline == NULL) || ((b == NULL) && (userinfo == NULL)))
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
725 return;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
726
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
727 if (userinfo == NULL)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
728 userinfo = aim_locate_finduserinfo(od->sess, b->name);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
729
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
730 if (b == NULL)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
731 b = gaim_find_buddy(account, userinfo->sn);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
732
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
733 if (b != NULL)
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
734 {
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
735 g = gaim_find_buddys_group(b);
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
736 presence = gaim_buddy_get_presence(b);
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
737 status = gaim_presence_get_active_status(presence);
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
738 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
739
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
740 if (userinfo != NULL)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
741 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
742
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
743 if (b != NULL) {
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
744 if (gaim_presence_is_online(presence)) {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
745 if (aim_sn_is_icq(b->name)) {
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
746 tmp = oscar_icqstatus((b->uc & 0xffff0000) >> 16);
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
747 oscar_string_append(str, newline, _("Status"), tmp);
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
748 g_free(tmp);
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
749 }
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
750 } else {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
751 tmp = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name);
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
752 if (aim_ssi_waitingforauth(od->sess->ssi.local, tmp, b->name))
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
753 oscar_string_append(str, newline, _("Status"), _("Not Authorized"));
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
754 else
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
755 oscar_string_append(str, newline, _("Status"), _("Offline"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
756 }
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
757 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
758
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
759 if ((bi != NULL) && (bi->ipaddr != 0)) {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
760 tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
761 (bi->ipaddr & 0xff000000) >> 24,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
762 (bi->ipaddr & 0x00ff0000) >> 16,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
763 (bi->ipaddr & 0x0000ff00) >> 8,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
764 (bi->ipaddr & 0x000000ff));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
765 oscar_string_append(str, newline, _("IP Address"), tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
766 g_free(tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
767 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
768
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
769 if ((userinfo != NULL) && (userinfo->capabilities != 0)) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
770 tmp = oscar_caps_to_string(userinfo->capabilities);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
771 oscar_string_append(str, newline, _("Capabilities"), tmp);
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
772 g_free(tmp);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
773 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
774
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
775 if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
776 tmp = aim_ssi_getcomment(od->sess->ssi.local, g->name, b->name);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
777 if (tmp != NULL) {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
778 char *tmp2 = g_markup_escape_text(tmp, strlen(tmp));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
779 g_free(tmp);
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
780 oscar_string_append(str, newline, _("Buddy Comment"), tmp2);
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
781 g_free(tmp2);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
782 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
783 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
784
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
785 if ((bi != NULL) && (bi->availmsg != NULL) && gaim_status_is_available(status)) {
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
786 tmp = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
787 oscar_string_append(str, newline, _("Available"), tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
788 g_free(tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
789 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
790 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
791
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
792 static char *extract_name(const char *name) {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
793 char *tmp, *x;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
794 int i, j;
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
795
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
796 if (!name)
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
797 return NULL;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
798
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
799 x = strchr(name, '-');
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
800
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
801 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
802 x = strchr(++x, '-');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
803 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
804 tmp = g_strdup(++x);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
805
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
806 for (i = 0, j = 0; x[i]; i++) {
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
807 char hex[3];
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
808 if (x[i] != '%') {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
809 tmp[j++] = x[i];
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
810 continue;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
811 }
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
812 strncpy(hex, x + ++i, 2); hex[2] = 0;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
813 i++;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
814 tmp[j++] = strtol(hex, NULL, 16);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
815 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
816
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
817 tmp[j] = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
818 return tmp;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
819 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
820
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
821 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
822 find_oscar_chat(GaimConnection *gc, int id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
823 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
824 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
825 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
826 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
827
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
828 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
829 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
830 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
831 if (cc->id == id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
832 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
833 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
834
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
835 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
836 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
837
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
838 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
839 find_oscar_chat_by_conn(GaimConnection *gc, aim_conn_t *conn)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
840 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
841 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
842 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
843 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
844
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
845 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
846 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
847 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
848 if (cc->conn == conn)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
849 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
850 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
851
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
852 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
853 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
854
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
855 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
856 find_oscar_chat_by_conv(GaimConnection *gc, GaimConversation *conv)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
857 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
858 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
859 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
860 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
861
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
862 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
863 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
864 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
865 if (cc->conv == conv)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
866 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
867 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
868
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
869 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
870 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
871
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
872 static void
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
873 oscar_chat_kill(GaimConnection *gc, struct chat_connection *cc)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
874 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
875 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
876
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
877 /* Notify the conversation window that we've left the chat */
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
878 serv_got_chat_left(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(cc->conv)));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
879
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
880 /* Destroy the chat_connection */
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
881 od->oscar_chats = g_slist_remove(od->oscar_chats, cc);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
882 if (cc->inpa > 0)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
883 gaim_input_remove(cc->inpa);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
884 aim_conn_kill(od->sess, &cc->conn);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
885 g_free(cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
886 g_free(cc->show);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
887 g_free(cc);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
888 }
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
889
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
890 /*****************************************************************************
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
891 * Begin scary direct im stuff
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
892 *****************************************************************************/
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
893
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
894 static struct oscar_direct_im *oscar_direct_im_find(OscarData *od, const char *who) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
895 GSList *d = od->direct_ims;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
896 struct oscar_direct_im *m = NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
897
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
898 while (d) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
899 m = (struct oscar_direct_im *)d->data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
900 if (!aim_sncmp(who, m->name))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
901 return m;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
902 d = d->next;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
903 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
904
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
905 return NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
906 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
907
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
908 static void oscar_direct_im_destroy(OscarData *od, struct oscar_direct_im *dim)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
909 {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
910 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
911 "destroying Direct IM for %s.\n", dim->name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
912
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
913 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
914 if (dim->gpc_pend) {
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
915 dim->killme = TRUE;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
916 return;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
917 }
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
918 if (dim->watcher)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
919 gaim_input_remove(dim->watcher);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
920 if (dim->conn) {
10271
361c9170d8af [gaim-migrate @ 11420]
Mark Doliner <mark@kingant.net>
parents: 10267
diff changeset
921 aim_conn_close(dim->conn);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
922 aim_conn_kill(od->sess, &dim->conn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
923 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
924 g_free(dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
925 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
926
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
927 /* the only difference between this and destroy is this writes a conv message */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
928 static void oscar_direct_im_disconnect(OscarData *od, struct oscar_direct_im *dim)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
929 {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
930 GaimConversation *conv;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
931 char buf[256];
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
932
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
933 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
934 "%s disconnected Direct IM.\n", dim->name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
935
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
936 if (dim->connected)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
937 g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), dim->name);
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
938 else
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
939 g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), dim->name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
940
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
941 conv = gaim_find_conversation_with_account(GAIM_CONV_IM, dim->name,
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
942 gaim_connection_get_account(dim->gc));
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
943 if (conv) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
944 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
9463
9a654ab734fe [gaim-migrate @ 10288]
Mark Doliner <mark@kingant.net>
parents: 9455
diff changeset
945 gaim_conversation_update_progress(conv, 0);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
946 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
947 gaim_notify_error(dim->gc, NULL, _("Direct Connect failed"), buf);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
948 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
949
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
950 oscar_direct_im_destroy(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
951
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
952 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
953 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
954
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
955 /* oops i made two of these. this one just calls the other one. */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
956 static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
957 {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
958 GaimConnection *gc = sess->aux_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
959 OscarData *od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
960 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
961 char *sn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
962
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
963 sn = g_strdup(aim_odc_getsn(conn));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
964 dim = oscar_direct_im_find(od, sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
965 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
966 g_free(sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
967 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
968
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
969 static void destroy_direct_im_request(struct ask_direct *d) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
970 gaim_debug_info("oscar", "Freeing DirectIM prompts.\n");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
972 g_free(d->sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
973 g_free(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
974 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
975
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
976 /* this is just a gaim_proxy_connect cb that sets up the rest of the cbs */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
977 static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
978 struct oscar_direct_im *dim = data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
979 GaimConnection *gc = dim->gc;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
980 OscarData *od = gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
981 GaimConversation *conv;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
982 char buf[256];
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
983 struct sockaddr name;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
984 socklen_t name_len = 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
985
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
986 g_return_if_fail(gc != NULL);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
987
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
988 dim->gpc_pend = FALSE;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
989 if (dim->killme) {
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
990 oscar_direct_im_destroy(od, dim);
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
991 return;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
992 }
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
993
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
994 if (!g_list_find(gaim_connections_get_all(), gc)) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
995 oscar_direct_im_destroy(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
996 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
997 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
998
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
999 if (source < 0) {
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1000 if (dim->donttryagain) {
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1001 oscar_direct_im_disconnect(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1002 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1003 } else {
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1004 fu8_t cookie[8];
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1005 char *who = g_strdup(dim->name);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1006 const char *tmp = aim_odc_getcookie(dim->conn);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1007
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1008 memcpy(cookie, tmp, 8);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1009 oscar_direct_im_destroy(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1010 oscar_direct_im_initiate(gc, who, cookie);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1011 gaim_debug_info("oscar", "asking direct im initiator to connect to us\n");
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1012 g_free(who);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1013 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1014 }
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1015 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1016
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1017 dim->conn->fd = source;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1018 aim_conn_completeconnect(od->sess, dim->conn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1019 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, dim->name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1020
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1021 /* This is the best way to see if we're connected or not */
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1022 /* Is this really needed? */
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1023 if (getpeername(source, &name, &name_len) == 0) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1024 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1025 dim->connected = TRUE;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1026 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1027 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1028 } else {
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1029 if (dim->donttryagain) {
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1030 oscar_direct_im_disconnect(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1031 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1032 } else {
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1033 fu8_t cookie[8];
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1034 char *who = g_strdup(dim->name);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1035 const char *tmp = aim_odc_getcookie(dim->conn);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1036
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1037 memcpy(cookie, tmp, 8);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1038 oscar_direct_im_destroy(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1039 oscar_direct_im_initiate(gc, who, cookie);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1040 gaim_debug_info("oscar", "asking direct im initiator to connect to us\n");
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1041 g_free(who);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1042 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1043 }
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1044 }
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1045
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1046
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1047 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1048
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1049 static void accept_direct_im_request(struct ask_direct *d) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1050 GaimConnection *gc = d->gc;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1051 OscarData *od;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1052 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1053 char *host; int port = 5190;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1054 int i, rc;
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1055 char *tmp;
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1056 GaimConversation *conv;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1057
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1058 if (!g_list_find(gaim_connections_get_all(), gc)) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1059 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1060 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1061 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1062
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1063 od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1064 gaim_debug_info("oscar", "Accepted DirectIM.\n");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1065
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1066 dim = oscar_direct_im_find(od, d->sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1067 if (dim && dim->connected) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1068 destroy_direct_im_request(d); /* 40 */ /* what does that 40 mean? */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1069 gaim_debug_info("oscar", "Wait, we're already connected, ignoring DirectIM.\n");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1070 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1071 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1072 dim = g_new0(struct oscar_direct_im, 1);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1073 dim->gc = d->gc;
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1074 dim->donttryagain = d->donttryagain;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1075 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1076
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1077 dim->conn = aim_odc_connect(od->sess, d->sn, NULL, d->cookie);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1078 od->direct_ims = g_slist_append(od->direct_ims, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1079 if (!dim->conn) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1080 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1081 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1082 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1083 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1084
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1085 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1086 gaim_odc_incoming, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1087 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1088 gaim_odc_typing, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1089 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1090 gaim_odc_update_ui, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1091
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1092 gaim_debug_info("oscar", "ip is %s.\n", d->ip);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1093 for (i = 0; i < (int)strlen(d->ip); i++) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1094 if (d->ip[i] == ':') {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1095 port = atoi(&(d->ip[i+1]));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1096 break;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1097 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1098 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1099 host = g_strndup(d->ip, i);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1100 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1101 dim->gpc_pend = TRUE;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1102 rc = gaim_proxy_connect(gc->account, host, port, oscar_odc_callback, dim);
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1103
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1104 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, d->sn);
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1105 tmp = g_strdup_printf(_("Attempting to connect to %s at %s:%hu for Direct IM."), d->sn, host,
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1106 port);
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1107 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1108 g_free(tmp);
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1109
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1110 g_free(host);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1111 if (rc < 0) {
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1112 dim->gpc_pend = FALSE;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1113 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1114 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1115 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1116 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1117
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1118 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1119
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1120 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1121 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1122
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1123 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1124 * We have just established a socket with the other dude, so set up some handlers.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1125 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1126 static int gaim_odc_initiate(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1127 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1128 OscarData *od = (OscarData *)gc->proto_data;
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
1129 GaimConversation *conv;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1130 struct oscar_direct_im *dim;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1131 char buf[256];
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1132 char *sn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1133 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1134 aim_conn_t *newconn, *listenerconn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1135
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1136 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1137 newconn = va_arg(ap, aim_conn_t *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1138 listenerconn = va_arg(ap, aim_conn_t *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1139 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1140
10271
361c9170d8af [gaim-migrate @ 11420]
Mark Doliner <mark@kingant.net>
parents: 10267
diff changeset
1141 aim_conn_close(listenerconn);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1142 aim_conn_kill(sess, &listenerconn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1143
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1144 sn = g_strdup(aim_odc_getsn(newconn));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1145
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1146 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1147 "DirectIM: initiate success to %s\n", sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1148 dim = oscar_direct_im_find(od, sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1149
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1150 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1151 gaim_input_remove(dim->watcher);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1152 dim->conn = newconn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1153 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1154 dim->connected = TRUE;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1155 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1156 g_free(sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1157 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1158
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1159 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, gaim_odc_incoming, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1160 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, gaim_odc_typing, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1161 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, gaim_odc_update_ui, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1162
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1163 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1164 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1165
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1166 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1167 * This is called when each chunk of an image is received. It can be used to
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1168 * update a progress bar, or to eat lots of dry cat food. Wet cat food is
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1169 * nasty, you sicko.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1170 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1171 static int gaim_odc_update_ui(aim_session_t *sess, aim_frame_t *fr, ...) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1172 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1173 char *sn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1174 double percent;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1175 GaimConnection *gc = sess->aux_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1176 OscarData *od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1177 GaimConversation *c;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1178 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1179
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1180 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1181 sn = va_arg(ap, char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1182 percent = va_arg(ap, double);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1183 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1184
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1185 if (!sn || !(dim = oscar_direct_im_find(od, sn)))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1186 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1187 if (dim->watcher) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1188 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1189 /* The callback will callback? I don't get how that would happen here. */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1190 dim->watcher = 0;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1191 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1192
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
1193 c = gaim_find_conversation_with_account(GAIM_CONV_IM, sn,
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
1194 gaim_connection_get_account(gc));
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1195 if (c != NULL)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1196 gaim_conversation_update_progress(c, percent);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1197 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1198 oscar_callback, dim->conn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1199
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1200 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1201 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1202
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1203 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1204 * This is called after a direct IM has been received in its entirety. This
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1205 * function is passed a long chunk of data which contains the IM with any
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1206 * data chunks (images) appended to it.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1207 *
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1208 * This function rips out all the data chunks and creates an imgstore for
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1209 * each one. In order to do this, it first goes through the IM and takes
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1210 * out all the IMG tags. When doing so, it rewrites the original IMG tag
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1211 * with one compatible with the imgstore Gaim core code. For each one, we
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1212 * then read in chunks of data from the end of the message and actually
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1213 * create the img store using the given data.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1214 *
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1215 * For somewhat easy reference, here's a sample message
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1216 * (without the whitespace and asterisks):
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1217 *
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1218 * <HTML><BODY BGCOLOR="#ffffff">
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1219 * <FONT LANG="0">
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1220 * This is a really stupid picture:<BR>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1221 * <IMG SRC="Sample.jpg" ID="1" WIDTH="283" HEIGHT="212" DATASIZE="9894"><BR>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1222 * Yeah it is<BR>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1223 * Here is another one:<BR>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1224 * <IMG SRC="Soap Bubbles.bmp" ID="2" WIDTH="256" HEIGHT="256" DATASIZE="65978">
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1225 * </FONT>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1226 * </BODY></HTML>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1227 * <BINARY>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1228 * <DATA ID="1" SIZE="9894">datadatadatadata</DATA>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1229 * <DATA ID="2" SIZE="65978">datadatadatadata</DATA>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1230 * </BINARY>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1231 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1232 static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1233 GaimConnection *gc = sess->aux_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1234 GaimConvImFlags imflags = 0;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1235 gchar *utf8;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1236 GString *newmsg = g_string_new("");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1237 GSList *images = NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1238 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1239 const char *sn, *msg, *msgend, *binary;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1240 size_t len;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1241 int encoding, isawaymsg;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1242
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1243 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1244 sn = va_arg(ap, const char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1245 msg = va_arg(ap, const char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1246 len = va_arg(ap, size_t);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1247 encoding = va_arg(ap, int);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1248 isawaymsg = va_arg(ap, int);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1249 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1250 msgend = msg + len;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1251
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1252 gaim_debug_info("oscar",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1253 "Got DirectIM message from %s\n", sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1254
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1255 if (isawaymsg)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1256 imflags |= GAIM_CONV_IM_AUTO_RESP;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1257
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1258 /* message has a binary trailer */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1259 if ((binary = gaim_strcasestr(msg, "<binary>"))) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1260 GData *attribs;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1261 const char *tmp, *start, *end, *last = NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1262
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1263 tmp = msg;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1264
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1265 /* for each valid image tag... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1266 while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1267 const char *id, *src, *datasize;
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1268 const char *data = NULL;
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1269 char *tag = NULL;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1270 size_t size;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1271 int imgid = 0;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1272
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1273 /* update the location of the last img tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1274 last = end;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1275
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1276 /* grab attributes */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1277 id = g_datalist_get_data(&attribs, "id");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1278 src = g_datalist_get_data(&attribs, "src");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1279 datasize = g_datalist_get_data(&attribs, "datasize");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1280
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1281 /* if we have id & datasize, build the data tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1282 if (id && datasize)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1283 tag = g_strdup_printf("<data id=\"%s\" size=\"%s\">", id, datasize);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1284
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1285 /* if we have a tag, find the start of the data */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1286 if (tag && (data = gaim_strcasestr(binary, tag)))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1287 data += strlen(tag);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1288
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1289 g_free(tag);
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1290
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1291 /* check the data is here and store it */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1292 if (data + (size = atoi(datasize)) <= msgend)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1293 imgid = gaim_imgstore_add(data, size, src);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1294
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1295 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1296 * XXX - The code below contains some calls to oscar_encoding_to_utf8
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1297 * The hardcoded "us-ascii" value REALLY needs to be removed.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1298 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1299 /* if we have a stored image... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1300 if (imgid) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1301 /* append the message up to the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1302 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, start - tmp);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1303 if (utf8 != NULL) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1304 newmsg = g_string_append(newmsg, utf8);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1305 g_free(utf8);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1306 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1307
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1308 /* write the new image tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1309 g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1310
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1311 /* and record the image number */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1312 images = g_slist_append(images, GINT_TO_POINTER(imgid));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1313 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1314 /* otherwise, copy up to the end of the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1315 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, (end + 1) - tmp);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1316 if (utf8 != NULL) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1317 newmsg = g_string_append(newmsg, utf8);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1318 g_free(utf8);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1319 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1320 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1321
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1322 /* clear the attribute list */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1323 g_datalist_clear(&attribs);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1324
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1325 /* continue from the end of the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1326 tmp = end + 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1327 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1328
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1329 /* append any remaining message data (without the > :-) */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1330 if (last++ && (last < binary))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1331 newmsg = g_string_append_len(newmsg, last, binary - last);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1332
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1333 /* set the flag if we caught any images */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1334 if (images)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1335 imflags |= GAIM_CONV_IM_IMAGES;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1336 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1337 g_string_append_len(newmsg, msg, len);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1338 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1339
10318
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1340 /* Convert to UTF8 */
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1341 /* (This hasn't been tested very much) */
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1342 utf8 = gaim_plugin_oscar_decode_im_part(gc->account, sn, encoding, 0x0000, newmsg->str, len);
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1343 if (utf8 != NULL) {
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1344 serv_got_im(gc, sn, utf8, imflags, time(NULL));
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1345 g_free(utf8);
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1346 }
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1347
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1348 /* free the message */
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1349 g_string_free(newmsg, TRUE);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1350
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1351 /* unref any images we allocated */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1352 if (images) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1353 GSList *tmp;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1354 int id;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1355
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1356 for (tmp = images; tmp != NULL; tmp = tmp->next) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1357 id = GPOINTER_TO_INT(tmp->data);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1358 gaim_imgstore_unref(id);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1359 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1360
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1361 g_slist_free(images);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1362 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1363
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1364 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1365 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1366
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1367 static int gaim_odc_typing(aim_session_t *sess, aim_frame_t *fr, ...) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1368 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1369 char *sn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1370 int typing;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1371 GaimConnection *gc = sess->aux_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1372
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1373 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1374 sn = va_arg(ap, char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1375 typing = va_arg(ap, int);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1376 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1377
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1378 if (typing == 0x0002) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1379 /* I had to leave this. It's just too funny. It reminds me of my sister. */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1380 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1381 "ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1382 serv_got_typing(gc, sn, 0, GAIM_TYPING);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1383 } else if (typing == 0x0001)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1384 serv_got_typing(gc, sn, 0, GAIM_TYPED);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1385 else
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1386 serv_got_typing_stopped(gc, sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1387 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1388 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1389
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1390 static int gaim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *message, GaimConvImFlags imflags) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1391 char *buf;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1392 size_t len;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1393 int ret;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1394 GString *msg = g_string_new("<HTML><BODY>");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1395 GString *data = g_string_new("</BODY></HTML><BINARY>");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1396 GData *attribs;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1397 const char *start, *end, *last;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1398 int oscar_id = 0;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1399
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1400 last = message;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1401
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1402 /* for each valid IMG tag... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1403 while (last && *last && gaim_markup_find_tag("img", last, &start, &end, &attribs)) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1404 GaimStoredImage *image = NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1405 const char *id;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1406
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1407 if (start - last) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1408 g_string_append_len(msg, last, start - last);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1409 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1410
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1411 id = g_datalist_get_data(&attribs, "id");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1412
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1413 /* ... if it refers to a valid gaim image ... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1414 if (id && (image = gaim_imgstore_get(atoi(id)))) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1415 /* ... append the message from start to the tag ... */
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1416 unsigned long size = gaim_imgstore_get_size(image);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1417 const char *filename = gaim_imgstore_get_filename(image);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1418 gpointer imgdata = gaim_imgstore_get_data(image);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1419
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1420 oscar_id++;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1421
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1422 /* ... insert a new img tag with the oscar id ... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1423 if (filename)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1424 g_string_append_printf(msg,
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1425 "<IMG SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1426 filename, oscar_id, size);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1427 else
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1428 g_string_append_printf(msg,
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1429 "<IMG ID=\"%d\" DATASIZE=\"%lu\">",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1430 oscar_id, size);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1431
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1432 /* ... and append the data to the binary section ... */
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1433 g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1434 oscar_id, size);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1435 data = g_string_append_len(data, imgdata, size);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1436 data = g_string_append(data, "</DATA>");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1437 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1438 /* If the tag is invalid, skip it, thus no else here */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1439
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1440 g_datalist_clear(&attribs);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1441
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1442 /* continue from the end of the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1443 last = end + 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1444 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1445
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1446 /* append any remaining message data (without the > :-) */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1447 if (last && *last)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1448 msg = g_string_append(msg, last);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1449
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1450 /* if we inserted any images in the binary section, append it */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1451 if (oscar_id) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1452 msg = g_string_append_len(msg, data->str, data->len);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1453 msg = g_string_append(msg, "</BINARY>");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1454 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1455
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1456 len = msg->len;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1457 buf = msg->str;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1458 g_string_free(msg, FALSE);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1459 g_string_free(data, TRUE);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1460
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1461
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1462 /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1463 if (imflags & GAIM_CONV_IM_AUTO_RESP)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1464 ret = aim_odc_send_im(sess, conn, buf, len, 0, 1);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1465 else
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1466 ret = aim_odc_send_im(sess, conn, buf, len, 0, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1467
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1468 g_free(buf);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1469
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1470 return ret;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1471 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1472
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1473 struct ask_do_dir_im {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1474 char *who;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1475 GaimConnection *gc;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1476 };
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1477
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1478 static void oscar_cancel_direct_im(struct ask_do_dir_im *data) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1479 g_free(data->who);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1480 g_free(data);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1481 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1482
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1483 /* this function is used to initiate a direct im session with someone.
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1484 * we start listening on a port and send a request. they either connect
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1485 * or send some kind of reply. If they can't connect, they ask us to
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1486 * connect to them, and so we do that.
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1487 *
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1488 * this function will also get called if the other side initiate's a direct
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1489 * im and we try to connect and fail. in that case cookie will not be null.
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1490 *
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1491 * note that cookie is an 8 byte string that isn't NULL terminated
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1492 */
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1493 static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const char *cookie) {
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1494 OscarData *od;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1495 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1496 int listenfd;
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1497 const char *ip;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1498
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1499 od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1500
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1501 dim = oscar_direct_im_find(od, who);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1502 if (dim) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1503 if (!(dim->connected)) { /* We'll free the old, unconnected dim, and start over */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1504 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1505 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1506 "Gave up on old direct IM, trying again\n");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1507 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1508 gaim_notify_error(gc, NULL, "DirectIM already open.", NULL);
8980
382bbf503c3d [gaim-migrate @ 9755]
Tim Ringenbach <marv@pidgin.im>
parents: 8978
diff changeset
1509 return;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1510 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1511 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1512 dim = g_new0(struct oscar_direct_im, 1);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1513 dim->gc = gc;
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1514 g_snprintf(dim->name, sizeof dim->name, "%s", who);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1515
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1516 listenfd = gaim_network_listen_range(5190, 5199);
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1517 ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1);
9455
5b4b3fb286b0 [gaim-migrate @ 10279]
Tim Ringenbach <marv@pidgin.im>
parents: 9407
diff changeset
1518 if (listenfd >= 0)
5b4b3fb286b0 [gaim-migrate @ 10279]
Tim Ringenbach <marv@pidgin.im>
parents: 9407
diff changeset
1519 dim->conn = aim_odc_initiate(od->sess, who, listenfd, gaim_network_ip_atoi(ip), gaim_network_get_port_from_fd(listenfd), cookie);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1520 if (dim->conn != NULL) {
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1521 char *tmp;
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1522 GaimConversation *conv;
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1523
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1524 od->direct_ims = g_slist_append(od->direct_ims, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1525 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1526 oscar_callback, dim->conn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1527 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1528 gaim_odc_initiate, 0);
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1529
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1530 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, who);
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1531 tmp = g_strdup_printf(_("Asking %s to connect to us at %s:%hu for Direct IM."), who, ip,
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1532 gaim_network_get_port_from_fd(listenfd));
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1533 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1534 g_free(tmp);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1535 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1536 gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1537 oscar_direct_im_destroy(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1538 }
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1539 }
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1540
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1541 static void oscar_direct_im(struct ask_do_dir_im *data) {
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1542 GaimConnection *gc = data->gc;
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1543
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1544 if (!g_list_find(gaim_connections_get_all(), gc)) {
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1545 g_free(data->who);
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1546 g_free(data);
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1547 return;
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1548 }
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1549
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1550 oscar_direct_im_initiate(gc, data->who, NULL);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1551 g_free(data->who);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1552 g_free(data);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1553 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1554
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1555 /* this is the right click menu cb thingy */
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1556 static void oscar_ask_direct_im(GaimBlistNode *node, gpointer ignored) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1557
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1558 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1559 GaimConnection *gc;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1560 gchar *buf;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1561 struct ask_do_dir_im *data;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1562
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1563 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1564
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1565 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1566 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1567
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1568 data = g_new0(struct ask_do_dir_im, 1);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1569 data->who = g_strdup(buddy->name);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1570 data->gc = gc;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1571 buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."),
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1572 buddy->name);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1573
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1574 gaim_request_action(gc, NULL, buf,
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1575 _("Because this reveals your IP address, it "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
1576 "may be considered a privacy risk. Do you "
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1577 "wish to continue?"),
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1578 0, data, 2,
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1579 _("Connect"), G_CALLBACK(oscar_direct_im),
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1580 _("Cancel"), G_CALLBACK(oscar_cancel_direct_im));
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1581 g_free(buf);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1582 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1583
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1584 /*****************************************************************************
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1585 * End scary direct im stuff
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1586 *****************************************************************************/
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1587
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1588 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1589 aim_conn_t *conn = (aim_conn_t *)data;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1590 aim_session_t *sess = aim_conn_getsess(conn);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1591 GaimConnection *gc = sess ? sess->aux_data : NULL;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1592 OscarData *od;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1593
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1594 if (!gc) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1595 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1596 "oscar callback for closed connection (1).\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1597 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1598 }
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1599
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1600 od = (OscarData *)gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1601
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1602 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1603 /* oh boy. this is probably bad. i guess the only thing we
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1604 * can really do is return? */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1605 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1606 "oscar callback for closed connection (2).\n");
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1607 gaim_debug_misc("oscar", "gc = %p\n", gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1608 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1609 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1610
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1611 if (condition & GAIM_INPUT_READ) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1612 if (conn->type == AIM_CONN_TYPE_LISTENER) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1613 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1614 "got information on rendezvous listener\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1615 if (aim_handlerendconnect(od->sess, conn) < 0) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1616 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1617 "connection error (rendezvous listener)\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1618 aim_conn_kill(od->sess, &conn);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1619 /* AAA - Don't we need to gaim_xfer_cancel here? --marv */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1620 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1621 } else {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1622 if (aim_get_command(od->sess, conn) >= 0) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1623 aim_rxdispatch(od->sess);
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1624 if (od->killme) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1625 gaim_debug_error("oscar", "Waiting to be destroyed\n");
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1626 return;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1627 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1628 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1629 if ((conn->type == AIM_CONN_TYPE_BOS) ||
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1630 !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS)))
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1631 {
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
1632 gaim_debug_error("oscar", "Major connection error. "
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
1633 "Invalid data was received on the oscar TCP stream\n");
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1634 gaim_connection_error(gc, _("Disconnected."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1635 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1636 struct chat_connection *cc = find_oscar_chat_by_conn(gc, conn);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1637 GaimConversation *conv = gaim_find_chat(gc, cc->id);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1638 char *buf;
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1639
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1640 gaim_debug_info("oscar", "Lost connection "
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1641 "to chat room %s\n", cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1642
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1643 buf = g_strdup_printf(_("You have lost your connection "
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1644 "to chat room %s."), cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1645 if (conv != NULL)
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
1646 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL));
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
1647 else
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
1648 gaim_notify_error(gc, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1649 g_free(buf);
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1650
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1651 oscar_chat_kill(gc, cc);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1652
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1653 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1654 if (od->cnpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1655 gaim_input_remove(od->cnpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1656 od->cnpa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1657 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1658 "removing chatnav input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1659 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1660 struct create_room *cr = od->create_rooms->data;
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1661 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1662 od->create_rooms =
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1663 g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1664 g_free(cr);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1665 gaim_notify_error(gc, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1666 _("Chat is currently unavailable"),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1667 NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1668 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1669 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1670 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1671 if (od->paspa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1672 gaim_input_remove(od->paspa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1673 od->paspa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1674 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1675 "removing authconn input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1676 aim_conn_kill(od->sess, &conn);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1677 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1678 if (od->emlpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1679 gaim_input_remove(od->emlpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1680 od->emlpa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1681 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1682 "removing email input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1683 aim_conn_kill(od->sess, &conn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1684 } else if (conn->type == AIM_CONN_TYPE_ICON) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1685 if (od->icopa > 0)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1686 gaim_input_remove(od->icopa);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1687 od->icopa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1688 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1689 "removing icon input watcher\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1690 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1691 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1692 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1693 gaim_odc_disconnect(od->sess, conn);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1694 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1695 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1696 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1697 "holy crap! generic connection error! %hu\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1698 conn->type);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1699 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1700 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1701 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1702 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1703 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1704 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1705
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1706 static void oscar_debug(aim_session_t *sess, int level, const char *format, va_list va) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1707 GaimConnection *gc = sess->aux_data;
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1708 gchar *s = g_strdup_vprintf(format, va);
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1709 gchar *buf;
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1710
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1711 buf = g_strdup_printf("%s %d: %s", gaim_account_get_username(gaim_connection_get_account(gc)), level, s);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1712 gaim_debug_info("oscar", buf);
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1713 if (buf[strlen(buf)-1] != '\n')
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1714 gaim_debug_info(NULL, "\n");
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1715 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1716 g_free(s);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1717 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1718
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1719 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1720 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1721 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1722 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1723 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1724 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1725
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1726 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1727 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1728 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1729 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1730
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1731 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1732 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1733 conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1734 conn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1735
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1736 if (source < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1737 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1738 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1739 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1740
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1741 aim_conn_completeconnect(sess, conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1742 gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, oscar_callback, conn);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1743 aim_request_login(sess, conn, gaim_account_get_username(gaim_connection_get_account(gc)));
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1744
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1745 gaim_debug_info("oscar",
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1746 "Screen name sent, waiting for response\n");
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1747 gaim_connection_update_progress(gc, _("Screen name sent"), 1, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1748 ck[1] = 0x65;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1749 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1750
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1751 static void
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1752 oscar_login(GaimAccount *account, GaimStatus *status)
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1753 {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1754 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1755 aim_conn_t *conn;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1756 GaimConnection *gc = gaim_account_get_connection(account);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1757 OscarData *od = gc->proto_data = g_new0(OscarData, 1);
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
1758 GaimStatusType *status_type;
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
1759 GaimStatusPrimitive primitive;
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
1760
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
1761 status_type = gaim_status_get_type(status);
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
1762 primitive = gaim_status_type_get_primitive(status_type);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1763
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1764 gaim_debug_misc("oscar", "oscar_login: gc = %p\n", gc);
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1765
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
1766 if (primitive == GAIM_STATUS_OFFLINE)
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
1767 return;
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
1768
8437
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1769 if (!aim_snvalid(gaim_account_get_username(account))) {
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1770 gchar *buf;
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
1771 buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), gaim_account_get_username(account));
8437
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1772 gaim_connection_error(gc, buf);
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1773 g_free(buf);
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1774 }
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1775
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
1776 if (aim_sn_is_icq((gaim_account_get_username(account)))) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1777 od->icq = TRUE;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
1778 } else {
6622
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
1779 gc->flags |= GAIM_CONNECTION_HTML;
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
1780 gc->flags |= GAIM_CONNECTION_AUTO_RESP;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
1781 }
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1782 od->buddyinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, oscar_free_buddyinfo);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1783
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1784 sess = g_new0(aim_session_t, 1);
10329
0ad82da3ffcf [gaim-migrate @ 11536]
Mark Doliner <mark@kingant.net>
parents: 10318
diff changeset
1785 aim_session_init(sess, TRUE, FAIM_DEBUG_LEVEL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1786 aim_setdebuggingcb(sess, oscar_debug);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1787 /*
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1788 * We need an immediate queue because we don't use a while-loop
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1789 * to see if things need to be sent.
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1790 */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1791 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1792 od->sess = sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1793 sess->aux_data = gc;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1794
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
1795 /* Connect to core Gaim signals */
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10042
diff changeset
1796 gaim_prefs_connect_callback(gc, "/plugins/prpl/oscar/recent_buddies", recent_buddies_cb, gc);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
1797
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1798 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1799 if (conn == NULL) {
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1800 gaim_debug_error("oscar", "internal connection error\n");
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1801 gaim_connection_error(gc, _("Unable to login to AIM"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1802 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1803 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1804
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
1805 aim_conn_addhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1806 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1807 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1808 aim_conn_addhandler(sess, conn, AIM_CB_FAM_ATH, AIM_CB_ATH_SECURID_REQUEST, gaim_parse_auth_securid_request, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1809
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1810 conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1811 if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", FAIM_LOGIN_SERVER),
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1812 gaim_account_get_int(account, "port", FAIM_LOGIN_PORT),
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1813 oscar_login_connect, gc) < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1814 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1815 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1816 }
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1817
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1818 gaim_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1819 ck[0] = 0x5a;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1820 }
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1821
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1822 static void oscar_close(GaimConnection *gc) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1823 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1824
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1825 while (od->oscar_chats) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1826 struct chat_connection *n = od->oscar_chats->data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1827 if (n->inpa > 0)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1828 gaim_input_remove(n->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1829 g_free(n->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1830 g_free(n->show);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1831 od->oscar_chats = g_slist_remove(od->oscar_chats, n);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1832 g_free(n);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1833 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1834 while (od->direct_ims) {
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1835 struct oscar_direct_im *n = od->direct_ims->data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1836 oscar_direct_im_destroy(od, n);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1837 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1838 /* BBB */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1839 while (od->file_transfers) {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1840 GaimXfer *xfer;
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1841 xfer = (GaimXfer *)od->file_transfers->data;
7805
5f0bb52c0609 [gaim-migrate @ 8452]
Mark Doliner <mark@kingant.net>
parents: 7793
diff changeset
1842 gaim_xfer_cancel_local(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1843 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1844 while (od->requesticon) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1845 char *sn = od->requesticon->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1846 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1847 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1848 }
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1849 g_hash_table_destroy(od->buddyinfo);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1850 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1851 struct create_room *cr = od->create_rooms->data;
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1852 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1853 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1854 g_free(cr);
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1855 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1856 if (od->email)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1857 g_free(od->email);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1858 if (od->newp)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1859 g_free(od->newp);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1860 if (od->oldp)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1861 g_free(od->oldp);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1862 if (gc->inpa > 0)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1863 gaim_input_remove(gc->inpa);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1864 if (od->cnpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1865 gaim_input_remove(od->cnpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1866 if (od->paspa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1867 gaim_input_remove(od->paspa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1868 if (od->emlpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1869 gaim_input_remove(od->emlpa);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1870 if (od->icopa > 0)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1871 gaim_input_remove(od->icopa);
6907
2c2ff3a50435 [gaim-migrate @ 7454]
Mark Doliner <mark@kingant.net>
parents: 6905
diff changeset
1872 if (od->icontimer > 0)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
1873 gaim_timeout_remove(od->icontimer);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1874 if (od->getblisttimer > 0)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
1875 gaim_timeout_remove(od->getblisttimer);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1876 if (od->getinfotimer > 0)
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1877 gaim_timeout_remove(od->getinfotimer);
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10042
diff changeset
1878 gaim_prefs_disconnect_by_handle(gc);
9971
ab5db2c5da79 [gaim-migrate @ 10882]
Mark Doliner <mark@kingant.net>
parents: 9948
diff changeset
1879
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1880 aim_session_kill(od->sess);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1881 g_free(od->sess);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1882 od->sess = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1883 g_free(gc->proto_data);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1884 gc->proto_data = NULL;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1885 gaim_debug_info("oscar", "Signed off.\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1886 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1887
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1888 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1889 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1890 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1891 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1892 aim_conn_t *bosconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1893
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1894 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1895 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1896 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1897 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1898
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1899 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1900 sess = od->sess;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1901 bosconn = od->conn;
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1902 bosconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1903
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1904 if (source < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1905 gaim_connection_error(gc, _("Could Not Connect"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1906 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1907 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1908
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1909 aim_conn_completeconnect(sess, bosconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1910 gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, oscar_callback, bosconn);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1911
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1912 gaim_connection_update_progress(gc,
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1913 _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1914 ck[4] = 0x61;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1915 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1916
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1917 /* BBB */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1918 /*
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1919 * This little area in oscar.c is the nexus of file transfer code,
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1920 * so I wrote a little explanation of what happens. I am such a
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1921 * ninja.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1922 *
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1923 * The series of events for a file send is:
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1924 * -Create xfer and call gaim_xfer_request (this happens in oscar_ask_sendfile)
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
1925 * -User chooses a file and oscar_xfer_init is called. It establishes a
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1926 * listening socket, then asks the remote user to connect to us (and
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1927 * gives them the file name, port, IP, etc.)
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1928 * -They connect to us and we send them an AIM_CB_OFT_PROMPT (this happens
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1929 * in oscar_sendfile_estblsh)
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1930 * -They send us an AIM_CB_OFT_ACK and then we start sending data
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1931 * -When we finish, they send us an AIM_CB_OFT_DONE and they close the
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1932 * connection.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1933 * -We get drunk because file transfer kicks ass.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1934 *
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1935 * The series of events for a file receive is:
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1936 * -Create xfer and call gaim_xfer request (this happens in incomingim_chan2)
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1937 * -Gaim user selects file to name and location to save file to and
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1938 * oscar_xfer_init is called
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1939 * -It connects to the remote user using the IP they gave us earlier
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1940 * -After connecting, they send us an AIM_CB_OFT_PROMPT. In reply, we send
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1941 * them an AIM_CB_OFT_ACK.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1942 * -They begin to send us lots of raw data.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1943 * -When they finish sending data we send an AIM_CB_OFT_DONE and then close
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
1944 * the connection.
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1945 */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1946 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1947
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1948 /*
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1949 * Miscellaneous xfer functions
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1950 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1951 static GaimXfer *oscar_find_xfer_by_cookie(GSList *fts, const fu8_t *ck)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1952 {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1953 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1954 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1955
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1956 while (fts) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1957 xfer = fts->data;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1958 oft_info = xfer->data;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1959
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1960 if (oft_info && !memcmp(ck, oft_info->cookie, 8))
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1961 return xfer;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1962
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1963 fts = g_slist_next(fts);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1964 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1965
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1966 return NULL;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1967 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1968
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1969 static GaimXfer *oscar_find_xfer_by_conn(GSList *fts, aim_conn_t *conn)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1970 {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1971 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1972 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1973
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1974 while (fts) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1975 xfer = fts->data;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1976 oft_info = xfer->data;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1977
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1978 if (oft_info && (conn == oft_info->conn))
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1979 return xfer;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1980
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1981 fts = g_slist_next(fts);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1982 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1983
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1984 return NULL;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1985 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1986
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1987 static void oscar_xfer_end(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1988 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1989 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1990 GaimConnection *gc = oft_info->sess->aux_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1991 OscarData *od = gc->proto_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1992
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1993 gaim_debug_info("oscar", "AAA - in oscar_xfer_end\n");
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1994
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1995 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1996 oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1997 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_DONE, oft_info);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1998 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1999
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2000 aim_conn_kill(oft_info->sess, &oft_info->conn);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2001 aim_oft_destroyinfo(oft_info);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2002 xfer->data = NULL;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2003 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2004 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2005
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2006 /*
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2007 * xfer functions used when receiving files
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2008 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2009
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2010 static void oscar_xfer_init_recv(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2011 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2012 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2013 GaimConnection *gc = oft_info->sess->aux_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2014 OscarData *od = gc->proto_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2015
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2016 gaim_debug_info("oscar", "AAA - in oscar_xfer_recv_init\n");
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2017
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2018 oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS, NULL);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2019 if (oft_info->conn) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2020 oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2021 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, oscar_sendfile_prompt, 0);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2022 oft_info->conn->fd = xfer->fd = gaim_proxy_connect(gaim_connection_get_account(gc),
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2023 xfer->remote_ip, xfer->remote_port, oscar_sendfile_connected, xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2024 if (xfer->fd == -1) {
10654
f2e86683cafc [gaim-migrate @ 12182]
Mark Doliner <mark@kingant.net>
parents: 10653
diff changeset
2025 gaim_xfer_error(GAIM_XFER_RECEIVE, gaim_xfer_get_account(xfer), xfer->who,
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2026 _("Unable to establish file descriptor."));
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2027 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2028 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2029 } else {
10654
f2e86683cafc [gaim-migrate @ 12182]
Mark Doliner <mark@kingant.net>
parents: 10653
diff changeset
2030 gaim_xfer_error(GAIM_XFER_RECEIVE, gaim_xfer_get_account(xfer), xfer->who,
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2031 _("Unable to create new connection."));
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2032 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2033 /* Try a different port? Ask them to connect to us? /join #gaim and whine? */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2034 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2035
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2036 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2037
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2038 static void oscar_xfer_cancel_recv(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2039 {
10405
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2040 struct aim_oft_info *oft_info;
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2041 GaimConnection *gc;
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2042 OscarData *od;
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2043
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2044 g_return_if_fail(xfer != NULL);
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2045 g_return_if_fail(xfer->data != NULL);
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2046
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2047 oft_info = xfer->data;
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2048 gc = oft_info->sess->aux_data;
046be0a754b6 [gaim-migrate @ 11650]
Mark Doliner <mark@kingant.net>
parents: 10404
diff changeset
2049 od = gc->proto_data;
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2050
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2051 gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_recv\n");
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2052
9771
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2053 if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE)
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2054 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2055
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2056 aim_conn_kill(oft_info->sess, &oft_info->conn);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2057 aim_oft_destroyinfo(oft_info);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2058 xfer->data = NULL;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2059 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2060 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2061
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2062 static void oscar_xfer_ack_recv(GaimXfer *xfer, const char *buffer, size_t size)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2063 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2064 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2065
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2066 /* Update our rolling checksum. Like Walmart, yo. */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2067 oft_info->fh.recvcsum = aim_oft_checksum_chunk(buffer, size, oft_info->fh.recvcsum);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2068 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2069
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2070 /*
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2071 * xfer functions used when sending files
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2072 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2073
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2074 static void oscar_xfer_init_send(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2075 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2076 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2077 GaimConnection *gc = oft_info->sess->aux_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2078 OscarData *od = gc->proto_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2079 int listenfd;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2080
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2081 gaim_debug_info("oscar", "AAA - in oscar_xfer_send_init\n");
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2082
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2083 xfer->filename = g_path_get_basename(xfer->local_filename);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2084 strncpy(oft_info->fh.name, xfer->filename, 64);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2085 oft_info->fh.name[63] = '\0';
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2086 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2087 oft_info->fh.size = gaim_xfer_get_size(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2088 oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2089
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2090 /* Create a listening socket and an associated libfaim conn */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2091 if ((listenfd = gaim_network_listen_range(5190, 5199)) < 0) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2092 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2093 return;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2094 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2095 xfer->local_port = gaim_network_get_port_from_fd(listenfd);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2096 oft_info->port = xfer->local_port;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2097 if (aim_sendfile_listen(od->sess, oft_info, listenfd) != 0) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2098 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2099 return;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2100 }
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2101 gaim_debug_misc("oscar",
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2102 "port is %hu, ip is %s\n",
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2103 xfer->local_port, oft_info->clientip);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2104 if (oft_info->conn) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2105 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2106 aim_im_sendch2_sendfile_ask(od->sess, oft_info);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2107 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2108 } else {
10654
f2e86683cafc [gaim-migrate @ 12182]
Mark Doliner <mark@kingant.net>
parents: 10653
diff changeset
2109 gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who,
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2110 _("Unable to establish listener socket."));
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2111 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2112 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2113 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2114
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2115 static void oscar_xfer_cancel_send(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2116 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2117 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2118 GaimConnection *gc = oft_info->sess->aux_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2119 OscarData *od = gc->proto_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2120
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2121 gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_send\n");
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2122
9771
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2123 if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE)
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2124 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2125
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2126 aim_conn_kill(oft_info->sess, &oft_info->conn);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2127 aim_oft_destroyinfo(oft_info);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2128 xfer->data = NULL;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2129 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2130 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2131
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2132 static void oscar_xfer_ack_send(GaimXfer *xfer, const char *buffer, size_t size)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2133 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2134 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2135
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2136 /* I'm not sure I like how we do this. --marv
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2137 * I do. AIM file transfers aren't really meant to be thought
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2138 * of as a transferring just a single file. The rendezvous
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2139 * establishes a connection between two computers, and then
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2140 * those computers can use the same connection for transferring
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2141 * multiple files. So we don't want the Gaim core up and closing
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2142 * the socket all willy-nilly. We want to do that in the oscar
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2143 * prpl, whenever one side or the other says they're finished
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2144 * using the connection. There might be a better way to intercept
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2145 * the socket from the core, however... --KingAnt
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2146 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2147
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2148 /*
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2149 * If we're done sending, intercept the socket from the core ft code
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2150 * and wait for the other guy to send the "done" OFT packet.
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2151 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2152 if (gaim_xfer_get_bytes_remaining(xfer) <= 0) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2153 gaim_input_remove(xfer->watcher);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2154 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2155 xfer->fd = 0;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2156 gaim_xfer_set_completed(xfer, TRUE);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2157 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2158 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2159
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2160 static gboolean oscar_can_receive_file(GaimConnection *gc, const char *who) {
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2161 gboolean can_receive = FALSE;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2162 OscarData *od = gc->proto_data;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2163
10517
461334f300d7 [gaim-migrate @ 11821]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10504
diff changeset
2164 if (od != NULL && !od->icq) {
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2165 aim_userinfo_t *userinfo;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2166 userinfo = aim_locate_finduserinfo(od->sess, who);
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2167 if (userinfo && userinfo->capabilities & AIM_CAPS_SENDFILE)
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2168 can_receive = TRUE;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2169 }
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2170
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2171 return can_receive;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2172 }
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2173
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2174 static void oscar_send_file(GaimConnection *gc, const char *who, const char *file) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2175
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2176 OscarData *od;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2177 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2178 struct aim_oft_info *oft_info;
8231
f50c059b6384 [gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents: 8227
diff changeset
2179 const char *ip;
3752
b32474e522fa [gaim-migrate @ 3890]
Luke Schierer <lschiere@pidgin.im>
parents: 3730
diff changeset
2180
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2181 od = (OscarData *)gc->proto_data;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2182
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2183 /* You want to send a file to someone else, you're so generous */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2184
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2185 /* Build the file transfer handle */
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2186 xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, who);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2187
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2188 /* Create the oscar-specific data */
8838
518455386538 [gaim-migrate @ 9604]
Mark Doliner <mark@kingant.net>
parents: 8800
diff changeset
2189 ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1);
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2190 oft_info = aim_oft_createinfo(od->sess, NULL, who, ip, 0, 0, 0, NULL);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2191 xfer->data = oft_info;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2192
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2193 /* Setup our I/O op functions */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2194 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_send);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2195 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2196 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2197 gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_send);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2198 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_send);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2199
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2200 /* Keep track of this transfer for later */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2201 od->file_transfers = g_slist_append(od->file_transfers, xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2202
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2203 /* Now perform the request */
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2204 if (file)
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2205 gaim_xfer_request_accepted(xfer, file);
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2206 else
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2207 gaim_xfer_request(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2208 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2209
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2210 static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2211 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2212 OscarData *od = gc->proto_data;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2213 GaimAccount *account = gc->account;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2214 aim_conn_t *bosconn;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2215 char *host; int port;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2216 int i, rc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2217 va_list ap;
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2218 struct aim_authresp_info *info;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2219
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2220 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2221
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2222 va_start(ap, fr);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2223 info = va_arg(ap, struct aim_authresp_info *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2224 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2225
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2226 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2227 "inside auth_resp (Screen name: %s)\n", info->sn);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2228
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2229 if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
2230 char buf[256];
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2231 switch (info->errorcode) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2232 case 0x05:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2233 /* Incorrect nick/password */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2234 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2235 gaim_connection_error(gc, _("Incorrect nickname or password."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2236 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2237 case 0x11:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2238 /* Suspended account */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2239 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2240 gaim_connection_error(gc, _("Your account is currently suspended."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2241 break;
3498
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
2242 case 0x14:
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
2243 /* service temporarily unavailable */
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2244 gaim_connection_error(gc, _("The AOL Instant Messenger service is temporarily unavailable."));
3498
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
2245 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2246 case 0x18:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2247 /* connecting too frequently */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2248 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2249 gaim_connection_error(gc, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2250 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2251 case 0x1c:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2252 /* client too old */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2253 gc->wants_to_die = TRUE;
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2254 g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), GAIM_WEBSITE);
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2255 gaim_connection_error(gc, buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2256 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2257 default:
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
2258 gaim_connection_error(gc, _("Authentication failed"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2259 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2260 }
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2261 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2262 "Login Error Code 0x%04hx\n", info->errorcode);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2263 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2264 "Error URL: %s\n", info->errorurl);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2265 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2266 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2267 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2268
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2269
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
2270 gaim_debug_misc("oscar", "Reg status: %hu\n", info->regstatus);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2271
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2272 if (info->email) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2273 gaim_debug_misc("oscar", "Email: %s\n", info->email);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2274 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2275 gaim_debug_misc("oscar", "Email is NULL\n");
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2276 }
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2277
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2278 gaim_debug_misc("oscar", "BOSIP: %s\n", info->bosip);
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2279 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2280 "Closing auth connection...\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2281 aim_conn_kill(sess, &fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2282
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2283 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2284 if (bosconn == NULL) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2285 gaim_connection_error(gc, _("Internal Error"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2286 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2287 return 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2288 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2289
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
2290 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2291 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_bos, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2292 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2293 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ACK, AIM_CB_ACK_ACK, NULL, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2294 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_REDIRECT, gaim_handle_redirect, 0);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2295 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_RIGHTSINFO, gaim_parse_locaterights, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2296 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_RIGHTSINFO, gaim_parse_buddyrights, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2297 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_ONCOMING, gaim_parse_oncoming, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2298 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING, gaim_parse_offgoing, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2299 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_INCOMING, gaim_parse_incoming_im, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2300 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_ERROR, gaim_parse_locerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2301 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MISSEDCALL, gaim_parse_misses, 0);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2302 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_CLIENTAUTORESP, gaim_parse_clientauto, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2303 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_RATECHANGE, gaim_parse_ratechange, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2304 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_EVIL, gaim_parse_evilnotify, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2305 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, AIM_CB_LOK_ERROR, gaim_parse_searcherror, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2306 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, 0x0003, gaim_parse_searchreply, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2307 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ERROR, gaim_parse_msgerr, 0);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2308 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MTN, gaim_parse_mtn, 0);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2309 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_userinfo, 0);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
2310 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_REQUESTINFOTIMEOUT, gaim_reqinfo_timeout, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2311 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ACK, gaim_parse_msgack, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2312 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_MOTD, gaim_parse_motd, 0);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2313 aim_conn_addhandler(sess, bosconn, 0x0004, 0x0005, gaim_icbm_param_info, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2314 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2315 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2316 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2317 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
2318 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
2319 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0021, oscar_icon_req,0);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
2320 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSG, gaim_offlinemsg, 0);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
2321 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSGCOMPLETE, gaim_offlinemsgdone, 0);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
2322 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_POP, 0x0002, gaim_popup, 0);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
2323 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_ALIAS, gaim_icqalias, 0);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
2324 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_INFO, gaim_icqinfo, 0);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2325 #ifndef NOSSI
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
2326 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ERROR, gaim_ssi_parseerr, 0);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
2327 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RIGHTSINFO, gaim_ssi_parserights, 0);
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
2328 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_LIST, gaim_ssi_parselist, 0);
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
2329 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_NOLIST, gaim_ssi_parselist, 0);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2330 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_SRVACK, gaim_ssi_parseack, 0);
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
2331 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADD, gaim_ssi_parseadd, 0);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2332 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTH, gaim_ssi_authgiven, 0);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2333 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREQ, gaim_ssi_authrequest, 0);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2334 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREP, gaim_ssi_authreply, 0);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2335 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADDED, gaim_ssi_gotadded, 0);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2336 #endif
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2337
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2338 od->conn = bosconn;
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2339 for (i = 0; i < (int)strlen(info->bosip); i++) {
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2340 if (info->bosip[i] == ':') {
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2341 port = atoi(&(info->bosip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2342 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2343 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2344 }
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2345 host = g_strndup(info->bosip, i);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2346 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2347 rc = gaim_proxy_connect(gc->account, host, port, oscar_bos_connect, gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2348 g_free(host);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2349 if (rc < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2350 gaim_connection_error(gc, _("Could Not Connect"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2351 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2352 return 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2353 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2354 aim_sendcookie(sess, bosconn, info->cookielen, info->cookie);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2355 gaim_input_remove(gc->inpa);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2356
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2357 gaim_connection_update_progress(gc, _("Received authorization"), 3, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
2358 ck[3] = 0x64;
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2359
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2360 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2361 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2362
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2363 static void
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2364 gaim_parse_auth_securid_request_yes_cb(gpointer user_data, const char *msg)
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2365 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2366 GaimConnection *gc = user_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2367 OscarData *od = gc->proto_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2368 aim_session_t *sess = od->sess;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2369
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2370 aim_auth_securid_send(sess, msg);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2371 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2372
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2373 static void
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2374 gaim_parse_auth_securid_request_no_cb(gpointer user_data, const char *value)
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2375 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2376 GaimConnection *gc = user_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2377 OscarData *od = gc->proto_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2378
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2379 /* Disconnect */
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2380 gc->wants_to_die = TRUE;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2381 gaim_connection_error(gc, _("The SecurID key entered is invalid."));
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2382 od->killme = TRUE;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2383 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2384
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2385 static int
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2386 gaim_parse_auth_securid_request(aim_session_t *sess, aim_frame_t *fr, ...)
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2387 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2388 GaimConnection *gc = sess->aux_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2389 GaimAccount *account = gaim_connection_get_account(gc);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2390 gchar *primary;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2391
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2392 gaim_debug_info("oscar", "Got SecurID request\n");
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2393
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2394 primary = g_strdup_printf("Enter the SecurID key for %s.", gaim_account_get_username(account));
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2395 gaim_request_input(gc, NULL, _("Enter SecurID"), primary,
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2396 _("Enter the 6 digit number from the digital display."),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2397 FALSE, FALSE, NULL,
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2398 _("OK"), G_CALLBACK(gaim_parse_auth_securid_request_yes_cb),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2399 _("Cancel"), G_CALLBACK(gaim_parse_auth_securid_request_no_cb),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2400 gc);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2401 g_free(primary);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2402
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2403 return 1;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2404 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2405
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
2406 /* XXX - Should use gaim_url_fetch for the below stuff */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2407 struct pieceofcrap {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2408 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2409 unsigned long offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2410 unsigned long len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2411 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2412 int fd;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2413 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2414 unsigned int inpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2415 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2416
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2417 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2418 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2419 struct pieceofcrap *pos = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2420 OscarData *od = pos->gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2421 char in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2422 int x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2423 unsigned char m[17];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2424
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2425 while (read(pos->fd, &in, 1) == 1) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2426 if (in == '\n')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2427 x++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2428 else if (in != '\r')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2429 x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2430 if (x == 2)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2431 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2432 in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2433 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2434 if (in != '\n') {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
2435 char buf[256];
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
2436 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2437 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2438 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2439 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2440 buf);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2441 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2442 close(pos->fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2443 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2444 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2445 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2446 read(pos->fd, m, 16);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2447 m[16] = '\0';
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2448 gaim_debug_misc("oscar", "Sending hash: ");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2449 for (x = 0; x < 16; x++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2450 gaim_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]);
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2451
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2452 gaim_debug_misc(NULL, "\n");
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2453 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2454 close(pos->fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2455 aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2456 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2457 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2458
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2459 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2460 struct pieceofcrap *pos = data;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2461 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2462
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2463 pos->fd = source;
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2464
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2465 if (source < 0) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2466 buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until "
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2467 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2468 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2469 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2470 buf);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2471 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2472 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2473 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2474 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2475 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2476 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2477
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2478 buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2479 pos->offset, pos->len, pos->modname ? pos->modname : "");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2480 write(pos->fd, buf, strlen(buf));
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2481 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2482 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2483 g_free(pos->modname);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2484 pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2485 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2486 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2487
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2488 /* size of icbmui.ocm, the largest module in AIM 3.5 */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2489 #define AIM_MAX_FILE_SIZE 98304
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2490
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2491 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2492 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2493 struct pieceofcrap *pos;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2494 fu32_t offset, len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2495 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2496
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2497 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2498 offset = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2499 len = va_arg(ap, fu32_t);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2500 modname = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2501 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2502
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2503 gaim_debug_misc("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
2504 "offset: %u, len: %u, file: %s\n",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2505 offset, len, (modname ? modname : "aim.exe"));
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2506
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2507 if (len == 0) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2508 gaim_debug_misc("oscar", "len is 0, hashing NULL\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2509 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2510 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2511 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2512 }
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
2513 /* uncomment this when you're convinced it's right. remember, it's been wrong before. */
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
2514 #if 0
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2515 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2516 char *buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2517 int i = 8;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2518 if (modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2519 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2520 buf = g_malloc(i);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2521 i = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2522 if (modname) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2523 memcpy(buf, modname, strlen(modname));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2524 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2525 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2526 buf[i++] = offset & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2527 buf[i++] = (offset >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2528 buf[i++] = (offset >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2529 buf[i++] = (offset >> 24) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2530 buf[i++] = len & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2531 buf[i++] = (len >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2532 buf[i++] = (len >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2533 buf[i++] = (len >> 24) & 0xff;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2534 gaim_debug_misc("oscar", "len + offset is invalid, "
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2535 "hashing request\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2536 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2537 g_free(buf);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2538 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2539 }
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
2540 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2541
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2542 pos = g_new0(struct pieceofcrap, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2543 pos->gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2544 pos->conn = fr->conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2545
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2546 pos->offset = offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2547 pos->len = len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2548 pos->modname = modname ? g_strdup(modname) : NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2549
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2550 if (gaim_proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) != 0) {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
2551 char buf[256];
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2552 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2553 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2554 g_free(pos);
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
2555 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
2556 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2557 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2558 _("Gaim was unable to get a valid login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2559 buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2560 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2561
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2562 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2563 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2564
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2565 static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2566 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2567 OscarData *od = gc->proto_data;
5591
74a0e79ad627 [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2568 GaimAccount *account = gaim_connection_get_account(gc);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2569 #if 0
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2570 struct client_info_s info = {"gaim", 7, 3, 2003, "us", "en", 0x0004, 0x0000, 0x04b};
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2571 #endif
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2572 va_list ap;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2573 char *key;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2574
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2575 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2576 key = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2577 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2578
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2579 if (od->icq) {
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
2580 struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD;
10740
94cc67130789 [gaim-migrate @ 12342]
Mark Doliner <mark@kingant.net>
parents: 10738
diff changeset
2581 aim_send_login(sess, fr->conn, gaim_account_get_username(account),
94cc67130789 [gaim-migrate @ 12342]
Mark Doliner <mark@kingant.net>
parents: 10738
diff changeset
2582 gaim_connection_get_password(gc), &info, key);
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
2583 } else {
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
2584 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
10740
94cc67130789 [gaim-migrate @ 12342]
Mark Doliner <mark@kingant.net>
parents: 10738
diff changeset
2585 aim_send_login(sess, fr->conn, gaim_account_get_username(account),
94cc67130789 [gaim-migrate @ 12342]
Mark Doliner <mark@kingant.net>
parents: 10738
diff changeset
2586 gaim_connection_get_password(gc), &info, key);
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
2587 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2588
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2589 gaim_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
2590 ck[2] = 0x6c;
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2591
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2592 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2593 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2594
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2595 static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2596 GaimConnection *gc = sess->aux_data;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2597 struct chat_connection *chatcon;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2598 static int id = 1;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2599
6905
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
2600 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, 0x0001, gaim_parse_genericerr, 0);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2601 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_conv_chat_join, 0);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2602 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_conv_chat_leave, 0);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2603 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_conv_chat_info_update, 0);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2604 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_INCOMINGMSG, gaim_conv_chat_incoming_msg, 0);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2605
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
2606 aim_clientready(sess, fr->conn);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2607
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2608 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2609 chatcon->id = id;
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
2610 chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2611
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2612 return 1;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2613 }
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2614
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2615 static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) {
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2616
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2617 aim_conn_addhandler(sess, fr->conn, 0x000d, 0x0001, gaim_parse_genericerr, 0);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2618 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2619
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2620 aim_clientready(sess, fr->conn);
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2621
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2622 aim_chatnav_reqrights(sess, fr->conn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2623
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2624 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2625 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2626
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2627 static int conninitdone_email(aim_session_t *sess, aim_frame_t *fr, ...) {
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2628
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2629 aim_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2630 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_EML, AIM_CB_EML_MAILSTATUS, gaim_email_parseupdate, 0);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2631
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2632 aim_email_sendcookies(sess);
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2633 aim_email_activate(sess);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2634 aim_clientready(sess, fr->conn);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2635
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2636 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2637 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2638
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2639 static int conninitdone_icon(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2640 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2641 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2642
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2643 aim_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2644 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_ERROR, gaim_icon_error, 0);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2645 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_RESPONSE, gaim_icon_parseicon, 0);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2646
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2647 aim_clientready(sess, fr->conn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2648
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
2649 od->iconconnecting = FALSE;
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
2650
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2651 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
2652 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
2653 od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2654
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2655 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2656 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2657
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2658 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2659 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2660 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2661 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2662 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2663
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2664 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2665 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2666 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2667 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2668
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2669 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2670 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2671 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2672 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2673
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2674 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2675 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2676 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2677 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2678 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2679 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2680
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2681 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2682 od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2683 gaim_debug_info("oscar", "chatnav: connected\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2684 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2685
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2686 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2687 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2688 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2689 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2690 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2691 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2692
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2693 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2694 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2695 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2696 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2697
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2698 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2699 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2700 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2701 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2702
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2703 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2704 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2705 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2706 "unable to connect to authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2707 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2708 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2709
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2710 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2711 od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2712 gaim_debug_info("oscar", "admin: connected\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2713 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2714
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2715 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2716 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2717 struct chat_connection *ccon = data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2718 GaimConnection *gc = ccon->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2719 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2720 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2721 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2722
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2723 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2724 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2725 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2726 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2727 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2728 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2729 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2730
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2731 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2732 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2733 tstconn = ccon->conn;
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2734 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2735
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2736 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2737 aim_conn_kill(sess, &tstconn);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2738 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2739 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2740 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2741 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2742 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2743
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2744 aim_conn_completeconnect(sess, ccon->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2745 ccon->inpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2746 od->oscar_chats = g_slist_append(od->oscar_chats, ccon);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2747 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2748
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2749 static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2750 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2751 OscarData *od;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2752 aim_session_t *sess;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2753 aim_conn_t *tstconn;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2754
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2755 if (!g_list_find(gaim_connections_get_all(), gc)) {
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2756 close(source);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2757 return;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2758 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2759
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2760 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2761 sess = od->sess;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2762 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2763 tstconn->fd = source;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2764
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2765 if (source < 0) {
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2766 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2767 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2768 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2769 return;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2770 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2771
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2772 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2773 od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2774 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2775 "email: connected\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2776 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2777
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2778 static void oscar_icon_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2779 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2780 OscarData *od;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2781 aim_session_t *sess;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2782 aim_conn_t *tstconn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2783
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2784 if (!g_list_find(gaim_connections_get_all(), gc)) {
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2785 close(source);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2786 return;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2787 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2788
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2789 od = gc->proto_data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2790 sess = od->sess;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2791 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2792 tstconn->fd = source;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2793
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2794 if (source < 0) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2795 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2796 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2797 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2798 return;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2799 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2800
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2801 aim_conn_completeconnect(sess, tstconn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2802 od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2803 gaim_debug_info("oscar", "icon: connected\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2804 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2805
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2806 /* Hrmph. I don't know how to make this look better. --mid */
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2807 static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2808 GaimConnection *gc = sess->aux_data;
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2809 GaimAccount *account = gaim_connection_get_account(gc);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2810 aim_conn_t *tstconn;
4452
2afc0f845e74 [gaim-migrate @ 4727]
Sean Egan <seanegan@gmail.com>
parents: 4443
diff changeset
2811 int i;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2812 char *host;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2813 int port;
4821
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
2814 va_list ap;
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
2815 struct aim_redirect_data *redir;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2816
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2817 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2818
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2819 va_start(ap, fr);
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2820 redir = va_arg(ap, struct aim_redirect_data *);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2821 va_end(ap);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2822
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2823 for (i = 0; i < (int)strlen(redir->ip); i++) {
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2824 if (redir->ip[i] == ':') {
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2825 port = atoi(&(redir->ip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2826 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2827 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2828 }
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2829 host = g_strndup(redir->ip, i);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2830
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2831 switch(redir->group) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2832 case 0x7: /* Authorizer */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2833 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2834 "Reconnecting with authorizor...\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2835 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2836 if (tstconn == NULL) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2837 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2838 "unable to reconnect with authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2839 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2840 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2841 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
2842 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2843 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2844
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2845 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2846 if (gaim_proxy_connect(account, host, port, oscar_auth_connect, gc) != 0) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2847 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2848 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2849 "unable to reconnect with authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2850 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2851 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2852 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2853 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2854 break;
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2855
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2856 case 0xd: /* ChatNav */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2857 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2858 if (tstconn == NULL) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2859 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2860 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2861 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2862 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2863 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
2864 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2865 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chatnav, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2866
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2867 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2868 if (gaim_proxy_connect(account, host, port, oscar_chatnav_connect, gc) != 0) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2869 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2870 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2871 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2872 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2873 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2874 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2875 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2876 break;
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2877
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2878 case 0xe: { /* Chat */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2879 struct chat_connection *ccon;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2880
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2881 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2882 if (tstconn == NULL) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2883 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2884 "unable to connect to chat server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2885 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2886 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2887 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2888
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
2889 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2890 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, 0);
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2891
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2892 ccon = g_new0(struct chat_connection, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2893 ccon->conn = tstconn;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2894 ccon->gc = gc;
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2895 ccon->name = g_strdup(redir->chat.room);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2896 ccon->exchange = redir->chat.exchange;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2897 ccon->instance = redir->chat.instance;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
2898 ccon->show = extract_name(redir->chat.room);
4634
d19872836812 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
2899
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2900 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2901 if (gaim_proxy_connect(account, host, port, oscar_chat_connect, ccon) != 0) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2902 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2903 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2904 "unable to connect to chat server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2905 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2906 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2907 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2908 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2909 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2910 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2911 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2912 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2913 "Connected to chat room %s exchange %hu\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2914 ccon->name, ccon->exchange);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2915 } break;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2916
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2917 case 0x0010: { /* icon */
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2918 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2919 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2920 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2921 g_free(host);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2922 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2923 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2924 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2925 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_icon, 0);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2926
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2927 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2928 if (gaim_proxy_connect(account, host, port, oscar_icon_connect, gc) != 0) {
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2929 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2930 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2931 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2932 g_free(host);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2933 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2934 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2935 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2936 } break;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
2937
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2938 case 0x0018: { /* email */
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2939 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2940 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2941 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2942 g_free(host);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2943 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2944 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
2945 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2946 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_email, 0);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2947
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2948 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2949 if (gaim_proxy_connect(account, host, port, oscar_email_connect, gc) != 0) {
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2950 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2951 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2952 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2953 g_free(host);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2954 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2955 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2956 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2957 } break;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
2958
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2959 default: /* huh? */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2960 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2961 "got redirect for unknown service 0x%04hx\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2962 redir->group);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2963 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2964 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2965
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2966 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2967 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2968 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2969
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2970 static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2971 {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2972 GaimConnection *gc;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2973 GaimAccount *account;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2974 OscarData *od;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2975 struct buddyinfo *bi;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2976 time_t time_idle = 0, signon = 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2977 int type = 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2978 int caps = 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2979 va_list ap;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2980 aim_userinfo_t *info;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2981 gboolean buddy_is_away = FALSE;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2982
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2983 gc = sess->aux_data;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2984 account = gaim_connection_get_account(gc);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2985 od = gc->proto_data;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2986
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2987 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2988 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2989 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2990
10130
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
2991 g_return_val_if_fail(info != NULL, 1);
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
2992 g_return_val_if_fail(info->sn != NULL, 1);
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
2993
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2994 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2995 caps = info->capabilities;
3267
5947e31a01c0 [gaim-migrate @ 3285]
Sean Egan <seanegan@gmail.com>
parents: 3214
diff changeset
2996
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
2997 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
2998 if (info->flags & AIM_FLAG_AWAY)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
2999 buddy_is_away = TRUE;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3000 }
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3001
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3002 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3003 type = (info->icqinfo.status << 16);
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
3004 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
3005 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3006 buddy_is_away = TRUE;
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
3007 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3008 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3009
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3010 if (caps & AIM_CAPS_ICQ_DIRECT)
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3011 caps ^= AIM_CAPS_ICQ_DIRECT;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3012
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3013 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3014 time(&time_idle);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3015 time_idle -= info->idletime*60;
9295
3313eab5033d [gaim-migrate @ 10098]
Mark Doliner <mark@kingant.net>
parents: 9285
diff changeset
3016 /* time_idle should be the seconds since epoch at which the user became idle */
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3017 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3018
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3019 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE)
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3020 signon = info->onlinesince;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3021 else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3022 signon = time(NULL) - info->sessionlen;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3023
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
3024 if (!aim_sncmp(gaim_account_get_username(account), info->sn)) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3025 gaim_connection_set_display_name(gc, info->sn);
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
3026 od->timeoffset = signon - gc->login_time;
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
3027 }
2305
0371b905baef [gaim-migrate @ 2315]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2303
diff changeset
3028
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3029 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, info->sn));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3030 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3031 bi = g_new0(struct buddyinfo, 1);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3032 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, info->sn)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3033 }
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
3034 bi->typingnot = FALSE;
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
3035 bi->ico_informed = FALSE;
6857
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
3036 bi->ipaddr = info->icqinfo.ipaddr;
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
3037
10563
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3038 /*
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3039 * Handle the available message. If info->avail is NULL then the user
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3040 * may or may not have an available message, so don't do anything. If
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3041 * info->avail is set to the empty string, then the user's client DOES
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3042 * support available messages and the user DOES NOT have one set.
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3043 * Otherwise info->avail contains the available message.
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3044 */
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3045 if (info->avail != NULL)
10563
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3046 {
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3047 free(bi->availmsg);
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3048 if (info->avail[0] != '\0')
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3049 bi->availmsg = oscar_encoding_to_utf8(info->avail_encoding, info->avail, info->avail_len);
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3050 else
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3051 bi->availmsg = NULL;
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3052 }
4732
c15e0699acae [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
3053
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3054 /* Server stored icon stuff */
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3055 if (info->iconcsumlen) {
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
3056 const char *filename = NULL, *saved_b16 = NULL;
9801
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3057 char *b16 = NULL, *filepath = NULL;
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3058 GaimBuddy *b = NULL;
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3059
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
3060 b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3061 b = gaim_find_buddy(account, info->sn);
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3062 /*
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3063 * If for some reason the checksum is valid, but cached file is not..
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3064 * we want to know.
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3065 */
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3066 filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon");
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3067 if (filename != NULL) {
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3068 if (g_file_test(filename, G_FILE_TEST_EXISTS))
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3069 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3070 "icon_checksum");
9801
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3071 else {
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3072 filepath = g_build_filename(gaim_buddy_icons_get_cache_dir(),
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3073 filename, NULL);
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3074 if (g_file_test(filepath, G_FILE_TEST_EXISTS))
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3075 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3076 "icon_checksum");
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3077 g_free(filepath);
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3078 }
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3079 } else
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3080 saved_b16 = NULL;
7054
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7045
diff changeset
3081
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3082 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3083 GSList *cur = od->requesticon;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3084 while (cur && aim_sncmp((char *)cur->data, info->sn))
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3085 cur = cur->next;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3086 if (!cur) {
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3087 od->requesticon = g_slist_append(od->requesticon, g_strdup(gaim_normalize(account, info->sn)));
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3088 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
3089 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
3090 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3091 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3092 }
6053
74b281b4ae29 [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3093 g_free(b16);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3094 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3095
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3096 /* XXX - Represent other ICQ statuses */
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3097 if (buddy_is_away == TRUE)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3098 gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_AWAY, NULL);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3099 else
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3100 gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_AVAILABLE, NULL);
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
3101 gaim_prpl_got_user_login_time(account, info->sn, signon - od->timeoffset);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3102 gaim_prpl_got_user_warning_level(account, info->sn, info->warnlevel/10.0 + 0.5);
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3103
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3104 if (time_idle > 0)
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3105 gaim_prpl_got_user_idle(account, info->sn, TRUE, time_idle);
10009
c124bef68132 [gaim-migrate @ 10926]
Mark Doliner <mark@kingant.net>
parents: 9995
diff changeset
3106 else
c124bef68132 [gaim-migrate @ 10926]
Mark Doliner <mark@kingant.net>
parents: 9995
diff changeset
3107 gaim_prpl_got_user_idle(account, info->sn, FALSE, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3108
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3109 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3110 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3111
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3112 static void gaim_check_comment(OscarData *od, const char *str) {
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3113 if ((str == NULL) || strcmp(str, ck))
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3114 aim_locate_setcaps(od->sess, caps_aim);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3115 else
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3116 aim_locate_setcaps(od->sess, caps_aim | AIM_CAPS_SECUREIM);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3117 }
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3118
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3119 static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3120 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3121 OscarData *od = gc->proto_data;
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3122 GaimAccount *account = gaim_connection_get_account(gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3123 va_list ap;
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
3124 aim_userinfo_t *info;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3125
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3126 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3127 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3128 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3129
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3130 gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3131
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
3132 g_hash_table_remove(od->buddyinfo, gaim_normalize(gc->account, info->sn));
5837
a48c338dff6c [gaim-migrate @ 6268]
Mark Doliner <mark@kingant.net>
parents: 5836
diff changeset
3133
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3134 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3135 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3136
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3137 /* BBB */
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3138 /*
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3139 * This is called after a remote AIM user has connected to us. We
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3140 * want to do some voodoo with the socket file descriptors, add a
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3141 * callback or two, and then send the AIM_CB_OFT_PROMPT.
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3142 */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3143 static int oscar_sendfile_estblsh(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3144 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3145 OscarData *od = (OscarData *)gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3146 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3147 struct aim_oft_info *oft_info;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3148 va_list ap;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3149 aim_conn_t *conn, *listenerconn;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3150
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3151 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3152 "AAA - in oscar_sendfile_estblsh\n");
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3153 va_start(ap, fr);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3154 conn = va_arg(ap, aim_conn_t *);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3155 listenerconn = va_arg(ap, aim_conn_t *);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3156 va_end(ap);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3157
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3158 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3159 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3160
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3161 if (!(oft_info = xfer->data))
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3162 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3163
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3164 /* Stop watching listener conn; watch transfer conn instead */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3165 gaim_input_remove(xfer->watcher);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3166 aim_conn_kill(sess, &listenerconn);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3167
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3168 oft_info->conn = conn;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3169 xfer->fd = oft_info->conn->fd;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3170
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3171 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, oscar_sendfile_ack, 0);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3172 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, oscar_sendfile_done, 0);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3173 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3174
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3175 /* Inform the other user that we are connected and ready to transfer */
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3176 aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3177
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3178 return 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3179 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3180
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3181 /*
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3182 * This is the gaim callback passed to gaim_proxy_connect when connecting to another AIM
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3183 * user in order to transfer a file.
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3184 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3185 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition) {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3186 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3187 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3188
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3189 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3190 "AAA - in oscar_sendfile_connected\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3191 if (!(xfer = data))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3192 return;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3193 if (!(oft_info = xfer->data))
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3194 return;
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3195 if (source < 0) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3196 gaim_xfer_cancel_remote(xfer);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3197 return;
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3198 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3199
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3200 xfer->fd = source;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3201 oft_info->conn->fd = source;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3202
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3203 aim_conn_completeconnect(oft_info->sess, oft_info->conn);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3204 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3205
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3206 /* Inform the other user that we are connected and ready to transfer */
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3207 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3208
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3209 return;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3210 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3211
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3212 /*
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3213 * This is called when a buddy sends us some file info. This happens when they
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3214 * are sending a file to you, and you have just established a connection to them.
4650
4938d12f6d48 [gaim-migrate @ 4961]
Mark Doliner <mark@kingant.net>
parents: 4649
diff changeset
3215 * You should send them the exact same info except use the real cookie. We also
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3216 * get like totally ready to like, receive the file, kay?
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3217 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3218 static int oscar_sendfile_prompt(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3219 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3220 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3221 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3222 struct aim_oft_info *oft_info;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3223 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3224 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3225 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3226 struct aim_fileheader_t *fh;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3227
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3228 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3229 "AAA - in oscar_sendfile_prompt\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3230 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3231 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3232 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3233 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3234 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3235
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3236 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3237 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3238
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3239 if (!(oft_info = xfer->data))
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3240 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3241
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3242 /* We want to stop listening with a normal thingy */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3243 gaim_input_remove(xfer->watcher);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3244 xfer->watcher = 0;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3245
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3246 /* They sent us some information about the file they're sending */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3247 memcpy(&oft_info->fh, fh, sizeof(*fh));
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3248
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3249 /* Fill in the cookie */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3250 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3251
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3252 /* XXX - convert the name from UTF-8 to UCS-2 if necessary, and pass the encoding to the call below */
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3253 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_ACK, oft_info);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3254 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3255
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3256 return 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3257 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3258
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3259 /*
4657
745f583372cd [gaim-migrate @ 4968]
Mark Doliner <mark@kingant.net>
parents: 4656
diff changeset
3260 * We are sending a file to someone else. They have just acknowledged our
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3261 * prompt, so we want to start sending data like there's no tomorrow.
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3262 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3263 static int oscar_sendfile_ack(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3264 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3265 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3266 GaimXfer *xfer;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3267 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3268 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3269 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3270 struct aim_fileheader_t *fh;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3271
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3272 gaim_debug_info("oscar", "AAA - in oscar_sendfile_ack\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3273 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3274 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3275 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3276 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3277 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3278
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3279 if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3280 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3281
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3282 /* We want to stop listening with a normal thingy */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3283 gaim_input_remove(xfer->watcher);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3284 xfer->watcher = 0;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3285
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3286 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3287
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3288 return 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3289 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3290
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3291 /*
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3292 * We just sent a file to someone. They said they got it and everything,
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3293 * so we can close our direct connection and what not.
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3294 */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3295 static int oscar_sendfile_done(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3296 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3297 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3298 GaimXfer *xfer;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3299 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3300 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3301 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3302 struct aim_fileheader_t *fh;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3303
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3304 gaim_debug_info("oscar", "AAA - in oscar_sendfile_done\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3305 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3306 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3307 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3308 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3309 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3310
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3311 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3312 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3313
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3314 xfer->fd = conn->fd;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3315 gaim_xfer_end(xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3316
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3317 return 0;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3318 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3319
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3320 static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3321 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3322 OscarData *od = gc->proto_data;
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3323 GaimAccount *account = gaim_connection_get_account(gc);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3324 GaimConvImFlags flags = 0;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3325 struct buddyinfo *bi;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3326 const char *iconfile;
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3327 GString *message;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3328 gchar *tmp;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3329 aim_mpmsg_section_t *curpart;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3330
10472
133a33699e19 [gaim-migrate @ 11757]
Mark Doliner <mark@kingant.net>
parents: 10464
diff changeset
3331 gaim_debug_misc("oscar", "Received IM from %s with %d parts\n",
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3332 userinfo->sn, args->mpmsg.numparts);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3333
10595
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
3334 if (args->mpmsg.numparts == 0)
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
3335 return 1;
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
3336
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3337 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3338 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3339 bi = g_new0(struct buddyinfo, 1);
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3340 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, userinfo->sn)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3341 }
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
3342
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
3343 if (args->icbmflags & AIM_IMFLAGS_AWAY)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3344 flags |= GAIM_CONV_IM_AUTO_RESP;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3345
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3346 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3347 bi->typingnot = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3348 else
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3349 bi->typingnot = FALSE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3350
4380
fe465b7d9440 [gaim-migrate @ 4646]
Mark Doliner <mark@kingant.net>
parents: 4374
diff changeset
3351 if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3352 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3353 "%s has an icon\n", userinfo->sn);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3354 if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3355 bi->ico_need = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3356 bi->ico_len = args->iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3357 bi->ico_csum = args->iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3358 bi->ico_time = args->iconstamp;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3359 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3360 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3361
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3362 if ((iconfile = gaim_account_get_buddy_icon(account)) &&
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
3363 (args->icbmflags & AIM_IMFLAGS_BUDDYREQ) && !bi->ico_sent && bi->ico_informed) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3364 FILE *file;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3365 struct stat st;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3366
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
3367 if (!g_stat(iconfile, &st)) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3368 char *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
3369 file = g_fopen(iconfile, "rb");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3370 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
3371 /* XXX - Use g_file_get_contents() */
2603
24664768a739 [gaim-migrate @ 2616]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2597
diff changeset
3372 int len = fread(buf, 1, st.st_size, file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3373 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3374 "Sending buddy icon to %s (%d bytes, "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3375 "%lu reported)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3376 userinfo->sn, len, st.st_size);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3377 aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size,
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3378 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3379 fclose(file);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
3380 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3381 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3382 "Can't open buddy icon file!\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3383 g_free(buf);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
3384 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3385 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3386 "Can't stat buddy icon file!\n");
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3387 }
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3388
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3389 message = g_string_new("");
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3390 curpart = args->mpmsg.parts;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3391 while (curpart != NULL) {
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
3392 tmp = gaim_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset, curpart->charsubset,
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3393 curpart->data, curpart->datalen);
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3394 if (tmp != NULL) {
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3395 g_string_append(message, tmp);
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3396 g_free(tmp);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3397 }
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3398
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3399 curpart = curpart->next;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3400 }
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3401 tmp = g_string_free(message, FALSE);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3402
8666
7a99cfed1996 [gaim-migrate @ 9418]
Mark Doliner <mark@kingant.net>
parents: 8660
diff changeset
3403 /*
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3404 * If the message is from an ICQ user and to an ICQ user then escape any HTML,
9016
53c1e635f11d [gaim-migrate @ 9792]
Luke Schierer <lschiere@pidgin.im>
parents: 9015
diff changeset
3405 * because HTML is not sent over ICQ as a means to format a message.
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3406 * So any HTML we receive is intended to be displayed. Also, \r\n must be
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3407 * replaced with <br>
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
3408 *
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
3409 * Note: There *may* be some clients which send messages as HTML formatted -
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
3410 * they need to be special-cased somehow.
8666
7a99cfed1996 [gaim-migrate @ 9418]
Mark Doliner <mark@kingant.net>
parents: 8660
diff changeset
3411 */
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3412 if (aim_sn_is_icq(gaim_account_get_username(account)) && aim_sn_is_icq(userinfo->sn)) {
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
3413 /* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */
10732
c4cb90065e1d [gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents: 10715
diff changeset
3414 gchar *tmp2 = g_markup_escape_text(tmp, -1);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3415 g_free(tmp);
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3416 tmp = tmp2;
10783
48779a02fe99 [gaim-migrate @ 12412]
Mark Doliner <mark@kingant.net>
parents: 10781
diff changeset
3417 tmp2 = gaim_strreplace(tmp, "\r\n", "<br>");
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3418 g_free(tmp);
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3419 tmp = tmp2;
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3420 }
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3421
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
3422 serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3423 g_free(tmp);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3424
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3425 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3426 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3427
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3428 static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) {
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3429 GaimConnection *gc;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3430 GaimAccount *account;
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3431 OscarData *od;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3432 const char *username = NULL;
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3433 char *message = NULL;
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3434
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3435 g_return_val_if_fail(sess != NULL, 0);
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3436 g_return_val_if_fail(sess->aux_data != NULL, 0);
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3437
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3438 gc = sess->aux_data;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3439 account = gaim_connection_get_account(gc);
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3440 od = gc->proto_data;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3441 username = gaim_account_get_username(account);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3442
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3443 if (args == NULL)
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3444 return 0;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3445
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3446 gaim_debug_misc("oscar", "rendezvous with %s, status is %hu\n",
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3447 userinfo->sn, args->status);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3448
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3449 if (args->msg != NULL)
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3450 {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3451 if (args->encoding != NULL)
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3452 {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3453 char *encoding = NULL;
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3454 encoding = oscar_encoding_extract(args->encoding);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3455 message = oscar_encoding_to_utf8(encoding, args->msg, args->msglen);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3456 g_free(encoding);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3457 } else {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3458 if (g_utf8_validate(args->msg, args->msglen, NULL))
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3459 message = g_strdup(args->msg);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3460 }
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3461 }
2869
9b029055cfba [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
3462
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3463 if (args->reqclass & AIM_CAPS_CHAT) {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3464 char *name;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3465 GHashTable *components;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3466
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3467 if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange) {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3468 g_free(message);
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3469 return 1;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3470 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3471 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3472 g_free);
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3473 name = extract_name(args->info.chat.roominfo.name);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3474 g_hash_table_replace(components, g_strdup("room"), g_strdup(name ? name : args->info.chat.roominfo.name));
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3475 g_hash_table_replace(components, g_strdup("exchange"), g_strdup_printf("%d", args->info.chat.roominfo.exchange));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3476 serv_got_chat_invite(gc,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3477 name ? name : args->info.chat.roominfo.name,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3478 userinfo->sn,
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3479 message,
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3480 components);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3481 if (name)
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3482 g_free(name);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3483 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3484 /* BBB */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3485 if (args->status == AIM_RENDEZVOUS_PROPOSE) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3486 /* Someone wants to send a file (or files) to us */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3487 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3488 struct aim_oft_info *oft_info;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3489
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3490 if (!args->cookie || !args->port || !args->verifiedip ||
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3491 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3492 !args->info.sendfile.totfiles || !args->reqclass) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3493 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3494 "%s tried to send you a file with incomplete "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3495 "information.\n", userinfo->sn);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3496 if (args->proxyip)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3497 gaim_debug_warning("oscar",
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
3498 "IP for a proxy server was given. Gaim "
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3499 "does not support this yet.\n");
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3500 g_free(message);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3501 return 1;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3502 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3503
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3504 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3505 /* last char of the ft req is a star, they are sending us a
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
3506 * directory -- remove the star and trailing slash so we don't save
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3507 * directories that look like 'dirname\*' -- arl */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3508 char *tmp = strrchr(args->info.sendfile.filename, '\\');
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3509 if (tmp && (tmp[1] == '*')) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3510 tmp[0] = '\0';
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3511 }
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3512 gaim_debug_warning("oscar",
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3513 "We're receiving a whole directory! What fun! "
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3514 "Especially since we don't support that!\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3515 }
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3516
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3517 /* Build the file transfer handle */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3518 xfer = gaim_xfer_new(gc->account, GAIM_XFER_RECEIVE, userinfo->sn);
5163
354518ac4e11 [gaim-migrate @ 5527]
Mark Doliner <mark@kingant.net>
parents: 5149
diff changeset
3519 xfer->remote_ip = g_strdup(args->verifiedip);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3520 xfer->remote_port = args->port;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3521 gaim_xfer_set_filename(xfer, args->info.sendfile.filename);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3522 gaim_xfer_set_size(xfer, args->info.sendfile.totsize);
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3523 gaim_xfer_set_message(xfer, message);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3524
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3525 /* Create the oscar-specific data */
5163
354518ac4e11 [gaim-migrate @ 5527]
Mark Doliner <mark@kingant.net>
parents: 5149
diff changeset
3526 oft_info = aim_oft_createinfo(od->sess, args->cookie, userinfo->sn, args->clientip, xfer->remote_port, 0, 0, NULL);
4898
bd37db7531e4 [gaim-migrate @ 5230]
Mark Doliner <mark@kingant.net>
parents: 4889
diff changeset
3527 if (args->proxyip)
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3528 oft_info->proxyip = g_strdup(args->proxyip);
4898
bd37db7531e4 [gaim-migrate @ 5230]
Mark Doliner <mark@kingant.net>
parents: 4889
diff changeset
3529 if (args->verifiedip)
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3530 oft_info->verifiedip = g_strdup(args->verifiedip);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3531 xfer->data = oft_info;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3532
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3533 /* Setup our I/O op functions */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3534 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3535 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3536 gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_recv);
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
3537 gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3538 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_recv);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3539
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3540 /* Keep track of this transfer for later */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3541 od->file_transfers = g_slist_append(od->file_transfers, xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3542
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3543 /* Now perform the request */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3544 gaim_xfer_request(xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3545 } else if (args->status == AIM_RENDEZVOUS_CANCEL) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3546 /* The other user wants to cancel a file transfer */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3547 GaimXfer *xfer;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3548 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3549 "AAA - File transfer canceled by remote user\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3550 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie)))
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
3551 gaim_xfer_cancel_remote(xfer);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3552 } else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3553 /*
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3554 * This gets sent by the receiver of a file
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3555 * as they connect directly to us. If we don't
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3556 * get this, then maybe a third party connected
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3557 * to us, and we shouldn't send them anything.
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3558 */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3559 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3560 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3561 "unknown rendezvous status!\n");
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3562 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3563 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
3564 } else if (args->reqclass & AIM_CAPS_TALK) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3565 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3566 gaim_buddy_icons_set_for_user(account, userinfo->sn,
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3567 args->info.icon.icon,
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3568 args->info.icon.length);
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3569 } else if (args->reqclass & AIM_CAPS_DIRECTIM) {
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3570 /* Consider moving all this into a helper func in the direct im block way up there */
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3571 struct ask_direct *d = g_new0(struct ask_direct, 1);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3572 struct oscar_direct_im *dim = oscar_direct_im_find(od, userinfo->sn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3573 char buf[256];
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3574
4212
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
3575 if (!args->verifiedip) {
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3576 /* TODO: do something about this, after figuring out what it means */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3577 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3578 "directim kill blocked (%s)\n", userinfo->sn);
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3579 g_free(message);
4650
4938d12f6d48 [gaim-migrate @ 4961]
Mark Doliner <mark@kingant.net>
parents: 4649
diff changeset
3580 return 1;
4212
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
3581 }
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
3582
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3583 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3584 "%s received direct im request from %s (%s)\n",
10594
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3585 username, userinfo->sn, args->verifiedip);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3586
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3587 d->gc = gc;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3588 d->sn = g_strdup(userinfo->sn);
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3589 /* Let's use the clientip here, because I think that's what AIM does.
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3590 * Besides, if the clientip is wrong, we'll probably timeout faster,
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3591 * and then ask them to connect to us. */
10594
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3592 /*
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3593 * I disagree, let's use the verifiedip. I think AIM tries the
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3594 * verified IP first, then tries the client IP if that fails. In
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3595 * any case, there's a better chance the verified IP will be correct.
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3596 * The client IP is what the other person _thinks_ their IP address
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3597 * is. The verified IP is the address that the AIM server sees the
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3598 * other person using.
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3599 */
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
3600 snprintf(d->ip, sizeof(d->ip), "%s:%d", args->verifiedip, args->port?args->port:5190);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3601 memcpy(d->cookie, args->cookie, 8);
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3602 if (dim && !dim->connected && aim_odc_getcookie(dim->conn) && args->cookie &&
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3603 (!memcmp(aim_odc_getcookie(dim->conn), args->cookie, 8))) {
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3604
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3605 oscar_direct_im_destroy(od, dim);
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
3606 d->donttryagain = TRUE;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3607 accept_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3608 } else {
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3609 if (dim && !dim->connected)
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3610 gaim_debug_warning("oscar", "DirectIM: received direct im request while "
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3611 "already connected to that buddy!");
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3612 g_snprintf(buf, sizeof buf, _("%s has just asked to directly connect to %s"), userinfo->sn, username);
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3613
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3614 gaim_request_action(gc, NULL, buf,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3615 _("This requires a direct connection between "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3616 "the two computers and is necessary for IM "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
3617 "Images. Because your IP address will be "
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3618 "revealed, this may be considered a privacy "
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
3619 "risk."),
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
3620 GAIM_DEFAULT_ACTION_NONE, d, 2,
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3621 _("Connect"), G_CALLBACK(accept_direct_im_request),
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3622 _("Cancel"), G_CALLBACK(destroy_direct_im_request));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3623 /* FIXME: we should actually send a packet on cancel */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
3624 }
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3625 } else if (args->reqclass & AIM_CAPS_ICQSERVERRELAY) {
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3626 gaim_debug_error("oscar", "Got an ICQ Server Relay message of type %d\n", args->info.rtfmsg.msgtype);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3627 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3628 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3629 "Unknown reqclass %hu\n", args->reqclass);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3630 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3631
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3632 g_free(message);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
3633
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3634 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3635 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3636
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3637 /*
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3638 * Authorization Functions
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3639 * Most of these are callbacks from dialogs. They're used by both
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3640 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3641 */
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3642 /* When you ask other people for authorization */
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3643 static void gaim_auth_request(struct name_data *data, char *msg) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3644 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3645
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3646 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3647 OscarData *od = gc->proto_data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3648 GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3649 GaimGroup *group = gaim_find_buddys_group(buddy);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3650 if (buddy && group) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3651 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3652 "ssi: adding buddy %s to group %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3653 buddy->name, group->name);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
3654 aim_ssi_sendauthrequest(od->sess, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3655 if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
3656 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 1);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3657 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3658 }
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
3659 }
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
3660
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
3661 static void gaim_auth_request_msgprompt(struct name_data *data) {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3662 gaim_request_input(data->gc, NULL, _("Authorization Request Message:"),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
3663 NULL, _("Please authorize me!"), TRUE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3664 _("OK"), G_CALLBACK(gaim_auth_request),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3665 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3666 data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3667 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3668
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3669 static void gaim_auth_dontrequest(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3670 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3671
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3672 if (g_list_find(gaim_connections_get_all(), gc)) {
8151
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
3673 /* Remove from local list */
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
3674 GaimBuddy *b = gaim_find_buddy(gaim_connection_get_account(gc), data->name);
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
3675 gaim_blist_remove_buddy(b);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3676 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3677
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3678 oscar_free_name_data(data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3679 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3680
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3681
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3682 static void gaim_auth_sendrequest(GaimConnection *gc, char *name) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3683 struct name_data *data = g_new(struct name_data, 1);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3684 GaimBuddy *buddy;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3685 gchar *dialog_msg, *nombre;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3686
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
3687 buddy = gaim_find_buddy(gc->account, name);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
3688 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
3689 nombre = g_strdup_printf("%s (%s)", name, gaim_buddy_get_alias_only(buddy));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3690 else
4830
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
3691 nombre = NULL;
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
3692
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
3693 dialog_msg = g_strdup_printf(_("The user %s requires authorization before being added to a buddy list. Do you want to send an authorization request?"), (nombre ? nombre : name));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3694 data->gc = gc;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3695 data->name = g_strdup(name);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3696 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3697
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3698 gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3699 0, data, 2,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3700 _("Request Authorization"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3701 G_CALLBACK(gaim_auth_request_msgprompt),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3702 _("Cancel"), G_CALLBACK(gaim_auth_dontrequest));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3703
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3704 g_free(dialog_msg);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3705 g_free(nombre);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3706 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3707
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3708
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3709 static void gaim_auth_sendrequest_menu(GaimBlistNode *node, gpointer ignored) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3710 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3711 GaimConnection *gc;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3712
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3713 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3714
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3715 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3716 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3717 gaim_auth_sendrequest(gc, buddy->name);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3718 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
3719
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3720 /* When other people ask you for authorization */
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3721 static void gaim_auth_grant(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3722 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3723
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3724 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3725 OscarData *od = gc->proto_data;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
3726 #ifdef NOSSI
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3727 GaimBuddy *buddy;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3728 gchar message;
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3729 message = 0;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
3730 buddy = gaim_find_buddy(gc->account, data->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3731 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
3732 gaim_account_notify_added(gc->account, NULL, data->name, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3733 #else
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
3734 aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3735 #endif
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3736 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3737
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3738 oscar_free_name_data(data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3739 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3740
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3741 /* When other people ask you for authorization */
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3742 static void gaim_auth_dontgrant(struct name_data *data, char *msg) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3743 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3744
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3745 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3746 OscarData *od = gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3747 #ifdef NOSSI
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3748 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, msg ? msg : _("No reason given."));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3749 #else
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
3750 aim_ssi_sendauthreply(od->sess, data->name, 0x00, msg ? msg : _("No reason given."));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3751 #endif
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3752 }
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
3753 }
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
3754
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
3755 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3756 gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
3757 NULL, _("No reason given."), TRUE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3758 _("OK"), G_CALLBACK(gaim_auth_dontgrant),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3759 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3760 data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3761 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3762
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3763 /* When someone sends you buddies */
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3764 static void gaim_icq_buddyadd(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3765 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3766
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3767 if (g_list_find(gaim_connections_get_all(), gc)) {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
3768 gaim_blist_request_add_buddy(gaim_connection_get_account(gc), data->name, NULL, data->nick);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3769 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
3770
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3771 oscar_free_name_data(data);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3772 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3773
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3774 static int incomingim_chan4(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch4_args *args, time_t t) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3775 GaimConnection *gc = sess->aux_data;
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
3776 GaimAccount *account = gaim_connection_get_account(gc);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3777 gchar **msg1, **msg2;
6051
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
3778 int i, numtoks;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3779
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3780 if (!args->type || !args->msg || !args->uin)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3781 return 1;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3782
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3783 gaim_debug_info("oscar",
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
3784 "Received a channel 4 message of type 0x%02hhx.\n",
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
3785 args->type);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3786
9919
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3787 /*
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3788 * Split up the message at the delimeter character, then convert each
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3789 * string to UTF-8. Unless, of course, this is a type 1 message. If
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3790 * this is a type 1 message, then the delimiter 0xfe could be a valid
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3791 * character in whatever encoding the message was sent in. Type 1
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3792 * messages are always made up of only one part, so we can easily account
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3793 * for this suck-ass part of the protocol by splitting the string into at
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3794 * most 1 baby string.
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3795 */
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
3796 msg1 = g_strsplit(args->msg, "\376", (args->type == 0x01 ? 1 : 0));
6051
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
3797 for (numtoks=0; msg1[numtoks]; numtoks++);
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
3798 msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3799 for (i=0; msg1[i]; i++) {
7478
3c21f3084ff0 [gaim-migrate @ 8091]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7475
diff changeset
3800 gaim_str_strip_cr(msg1[i]);
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
3801 msg2[i] = gaim_plugin_oscar_decode_im_part(account, "1", AIM_CHARSET_ASCII, 0x0000, msg1[i], strlen(msg1[i]));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3802 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3803 msg2[i] = NULL;
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3804
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3805 switch (args->type) {
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3806 case 0x01: { /* MacICQ message or basic offline message */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3807 if (i >= 1) {
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3808 gchar *uin = g_strdup_printf("%u", args->uin);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3809 gchar *tmp;
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3810
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3811 /* If the message came from an ICQ user then escape any HTML */
10732
c4cb90065e1d [gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents: 10715
diff changeset
3812 tmp = g_markup_escape_text(msg2[0], -1);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3813
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3814 if (t) { /* This is an offline message */
9680
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
3815 /* The timestamp is UTC-ish, so we need to get the offset */
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
3816 #ifdef HAVE_TM_GMTOFF
9724
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
3817 time_t now;
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
3818 struct tm *tm;
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
3819 now = time(NULL);
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
3820 tm = localtime(&now);
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
3821 t += tm->tm_gmtoff;
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
3822 #else
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
3823 # ifdef HAVE_TIMEZONE
9680
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
3824 tzset();
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
3825 t -= timezone;
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
3826 # endif
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
3827 #endif
8514
ed1f3a8f0ccd [gaim-migrate @ 9252]
Mark Doliner <mark@kingant.net>
parents: 8501
diff changeset
3828 serv_got_im(gc, uin, tmp, 0, t);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3829 } else { /* This is a message from MacICQ/Miranda */
8514
ed1f3a8f0ccd [gaim-migrate @ 9252]
Mark Doliner <mark@kingant.net>
parents: 8501
diff changeset
3830 serv_got_im(gc, uin, tmp, 0, time(NULL));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3831 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3832 g_free(uin);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3833 g_free(tmp);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3834 }
3316
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
3835 } break;
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
3836
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3837 case 0x04: { /* Someone sent you a URL */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3838 if (i >= 2) {
7385
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3839 if (msg2[1] != NULL) {
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3840 gchar *uin = g_strdup_printf("%u", args->uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3841 gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>",
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3842 msg2[1],
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3843 (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3844 serv_got_im(gc, uin, message, 0, time(NULL));
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3845 g_free(uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3846 g_free(message);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
3847 }
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3848 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3849 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3850
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3851 case 0x06: { /* Someone requested authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3852 if (i >= 6) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3853 struct name_data *data = g_new(struct name_data, 1);
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3854 gchar *dialog_msg = g_strdup_printf(_("The user %u wants to add you to their buddy list for the following reason:\n%s"), args->uin, msg2[5] ? msg2[5] : _("No reason given."));
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3855 gaim_debug_info("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3856 "Received an authorization request from UIN %u\n",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3857 args->uin);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3858 data->gc = gc;
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3859 data->name = g_strdup_printf("%u", args->uin);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3860 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3861
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3862 gaim_request_action(gc, NULL, _("Authorization Request"),
9948
b13013595c08 [gaim-migrate @ 10844]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
3863 dialog_msg, GAIM_DEFAULT_ACTION_NONE, data,
b13013595c08 [gaim-migrate @ 10844]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
3864 2, _("Authorize"),
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3865 G_CALLBACK(gaim_auth_grant),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3866 _("Deny"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3867 G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3868 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3869 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3870 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3871
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3872 case 0x07: { /* Someone has denied you authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3873 if (i >= 1) {
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3874 gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your buddy list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given."));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3875 gaim_notify_info(gc, NULL, _("ICQ authorization denied."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3876 dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3877 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3878 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3879 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3880
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3881 case 0x08: { /* Someone has granted you authorization */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3882 gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your buddy list."), args->uin);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3883 gaim_notify_info(gc, NULL, "ICQ authorization accepted.",
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3884 dialog_msg);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3885 g_free(dialog_msg);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3886 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3887
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
3888 case 0x09: { /* Message from the Godly ICQ server itself, I think */
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
3889 if (i >= 5) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
3890 gchar *dialog_msg = g_strdup_printf(_("You have received a special message\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3891 gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
3892 g_free(dialog_msg);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
3893 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
3894 } break;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
3895
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3896 case 0x0d: { /* Someone has sent you a pager message from http://www.icq.com/your_uin */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3897 if (i >= 6) {
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3898 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ page\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3899 gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3900 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3901 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3902 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3903
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3904 case 0x0e: { /* Someone has emailed you at your_uin@pager.icq.com */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3905 if (i >= 6) {
4308
b3a14484fc2f [gaim-migrate @ 4562]
Mark Doliner <mark@kingant.net>
parents: 4303
diff changeset
3906 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ email from %s [%s]\n\nMessage is:\n%s"), msg2[0], msg2[3], msg2[5]);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3907 gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3908 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3909 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3910 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3911
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3912 case 0x12: {
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3913 /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3914 /* Someone added you to their buddy list? */
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3915 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3916
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3917 case 0x13: { /* Someone has sent you some ICQ buddies */
7631
ea2d07ad05a9 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7621
diff changeset
3918 guint i, num;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3919 gchar **text;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3920 text = g_strsplit(args->msg, "\376", 0);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3921 if (text) {
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3922 num = 0;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3923 for (i=0; i<strlen(text[0]); i++)
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3924 num = num*10 + text[0][i]-48;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3925 for (i=0; i<num; i++) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3926 struct name_data *data = g_new(struct name_data, 1);
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3927 gchar *message = g_strdup_printf(_("ICQ user %u has sent you a buddy: %s (%s)"), args->uin, text[i*2+2], text[i*2+1]);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3928 data->gc = gc;
4790
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
3929 data->name = g_strdup(text[i*2+1]);
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
3930 data->nick = g_strdup(text[i*2+2]);
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3931
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3932 gaim_request_action(gc, NULL, message,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3933 _("Do you want to add this buddy "
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3934 "to your buddy list?"),
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
3935 GAIM_DEFAULT_ACTION_NONE, data, 2,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3936 _("Add"), G_CALLBACK(gaim_icq_buddyadd),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3937 _("Decline"), G_CALLBACK(oscar_free_name_data));
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3938 g_free(message);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3939 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3940 g_strfreev(text);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3941 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3942 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3943
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
3944 case 0x1a: { /* Someone has sent you a greeting card or requested buddies? */
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3945 /* This is boring and silly. */
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3946 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
3947
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3948 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3949 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3950 "Received a channel 4 message of unknown type "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3951 "(type 0x%02hhx).\n", args->type);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3952 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3953 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3954
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3955 g_strfreev(msg1);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3956 g_strfreev(msg2);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3957
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3958 return 1;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3959 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3960
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3961 static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) {
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3962 fu16_t channel;
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3963 int ret = 0;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3964 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3965 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3966
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3967 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3968 channel = (fu16_t)va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3969 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3970
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3971 switch (channel) {
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3972 case 1: { /* standard message */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3973 struct aim_incomingim_ch1_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3974 args = va_arg(ap, struct aim_incomingim_ch1_args *);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3975 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3976 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3977
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
3978 case 2: { /* rendezvous */
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3979 struct aim_incomingim_ch2_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3980 args = va_arg(ap, struct aim_incomingim_ch2_args *);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3981 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3982 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3983
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3984 case 4: { /* ICQ */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3985 struct aim_incomingim_ch4_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3986 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3987 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3988 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3989
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3990 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3991 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3992 "ICBM received on unsupported channel (channel "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3993 "0x%04hx).", channel);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3994 } break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3995 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3996
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3997 va_end(ap);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3998
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3999 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4000 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4001
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4002 static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) {
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4003 GaimConnection *gc = sess->aux_data;
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4004 GaimAccount *account = gaim_connection_get_account(gc);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4005 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4006 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4007 fu16_t chan, nummissed, reason;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4008 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4009
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4010 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4011 chan = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4012 userinfo = va_arg(ap, aim_userinfo_t *);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4013 nummissed = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4014 reason = (fu16_t)va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4015 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4016
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4017 switch(reason) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4018 case 0: /* Invalid (0) */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4019 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4020 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4021 "You missed %hu message from %s because it was invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4022 "You missed %hu messages from %s because they were invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4023 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4024 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4025 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4026 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4027 case 1: /* Message too large */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4028 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4029 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4030 "You missed %hu message from %s because it was too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4031 "You missed %hu messages from %s because they were too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4032 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4033 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4034 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4035 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4036 case 2: /* Rate exceeded */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4037 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4038 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4039 "You missed %hu message from %s because the rate limit has been exceeded.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4040 "You missed %hu messages from %s because the rate limit has been exceeded.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4041 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4042 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4043 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4044 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4045 case 3: /* Evil Sender */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4046 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4047 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4048 "You missed %hu message from %s because he/she was too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4049 "You missed %hu messages from %s because he/she was too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4050 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4051 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4052 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4053 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4054 case 4: /* Evil Receiver */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4055 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4056 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4057 "You missed %hu message from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4058 "You missed %hu messages from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4059 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4060 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4061 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4062 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4063 default:
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4064 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4065 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4066 "You missed %hu message from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4067 "You missed %hu messages from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4068 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4069 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4070 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4071 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4072 }
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4073
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4074 if (!gaim_conv_present_error(userinfo->sn, account, buf))
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4075 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4076 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4077
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4078 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4079 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4080
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4081 static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const char *cookie) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4082 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4083 OscarData *od = gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4084
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4085 /* BBB */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4086 switch (reason) {
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4087 case 3: { /* Decline sendfile. */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4088 GaimXfer *xfer;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4089 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4090
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4091 gaim_debug_info("oscar",
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4092 "AAA - Other user declined some sort of direct "
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4093 "connect attempt (automaticly?)\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4094 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
4095 gaim_xfer_cancel_remote(xfer);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4096 else if ((dim = oscar_direct_im_find(od, who))) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4097 /* AAA should use find by cookie or something here */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4098 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4099 }
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4100 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4101
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4102 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4103 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4104 "Received an unknown rendezvous client auto-response "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
4105 "from %s. Type 0x%04hx\n", who, reason);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4106 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4107
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4108 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4109
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4110 return 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4111 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4112
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4113 static int gaim_parse_clientauto_ch4(aim_session_t *sess, char *who, fu16_t reason, fu32_t state, char *msg) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4114 GaimConnection *gc = sess->aux_data;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4115
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4116 switch(reason) {
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4117 case 0x0003: { /* Reply from an ICQ status message request */
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4118 char *title, *statusmsg, **splitmsg, *dialogmsg;
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4119
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4120 title = g_strdup_printf(_("Info for %s"), who);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4121
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4122 /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4123 statusmsg = oscar_icqstatus(state);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4124 splitmsg = g_strsplit(msg, "\r\n", 0);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4125 dialogmsg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, statusmsg, g_strjoinv("<BR>", splitmsg));
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4126 g_free(statusmsg);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4127 g_strfreev(splitmsg);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4128
9797
62eb9fe24692 [gaim-migrate @ 10665]
Luke Schierer <lschiere@pidgin.im>
parents: 9771
diff changeset
4129 gaim_notify_userinfo(gc, who, title, _("Buddy Information"), NULL, dialogmsg, NULL, NULL);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4130
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4131 g_free(title);
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4132 g_free(dialogmsg);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4133 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4134
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4135 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4136 gaim_debug_warning("oscar",
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
4137 "Received an unknown client auto-response from %s. "
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4138 "Type 0x%04hx\n", who, reason);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4139 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4140 } /* end of switch */
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4141
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4142 return 0;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4143 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4144
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4145 static int gaim_parse_clientauto(aim_session_t *sess, aim_frame_t *fr, ...) {
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4146 va_list ap;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4147 fu16_t chan, reason;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4148 char *who;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4149
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4150 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4151 chan = (fu16_t)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4152 who = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4153 reason = (fu16_t)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4154
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
4155 if (chan == 0x0002) { /* File transfer declined */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4156 char *cookie = va_arg(ap, char *);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4157 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
4158 } else if (chan == 0x0004) { /* ICQ message */
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4159 fu32_t state = 0;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4160 char *msg = NULL;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4161 if (reason == 0x0003) {
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4162 state = va_arg(ap, fu32_t);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4163 msg = va_arg(ap, char *);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4164 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4165 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4166 }
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
4167
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4168 va_end(ap);
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4169
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4170 return 1;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4171 }
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4172
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4173 static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4174 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4175 fu16_t reason;
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4176 char *m;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4177
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4178 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4179 reason = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4180 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4181
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4182 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4183 "snac threw error (reason 0x%04hx: %s)\n", reason,
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4184 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4185
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4186 m = g_strdup_printf(_("SNAC threw error: %s\n"),
5411
2c4188300aba [gaim-migrate @ 5787]
Mark Doliner <mark@kingant.net>
parents: 5402
diff changeset
4187 reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error"));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4188 gaim_notify_error(sess->aux_data, NULL, m, NULL);
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4189 g_free(m);
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4190
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4191 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4192 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4193
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4194 static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) {
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4195 GaimConnection *gc = sess->aux_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4196 #if 0
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4197 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4198 GaimXfer *xfer;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4199 #endif
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4200 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4201 fu16_t reason;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4202 char *data, *buf;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4203
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4204 va_start(ap, fr);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4205 reason = (fu16_t)va_arg(ap, unsigned int);
3752
b32474e522fa [gaim-migrate @ 3890]
Luke Schierer <lschiere@pidgin.im>
parents: 3730
diff changeset
4206 data = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4207 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4208
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4209 gaim_debug_error("oscar",
10130
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
4210 "Message error with data %s and reason %hu\n",
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
4211 (data != NULL ? data : ""), reason);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4212
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4213 /* BBB */
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4214 #if 0
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4215 /* If this was a file transfer request, data is a cookie */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4216 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, data))) {
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
4217 gaim_xfer_cancel_remote(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4218 return 1;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4219 }
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4220 #endif
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4221
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4222 /* Data is assumed to be the destination sn */
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4223 buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Unknown reason."));
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4224 if (!gaim_conv_present_error(data, gaim_connection_get_account(gc), buf)) {
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4225 g_free(buf);
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4226 buf = g_strdup_printf(_("Unable to send message to %s:"), data ? data : "(unknown)");
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4227 gaim_notify_error(sess->aux_data, NULL, buf,
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4228 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4229 }
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4230 g_free(buf);
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4231
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4232 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4233 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4234
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4235 static int gaim_parse_mtn(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4236 GaimConnection *gc = sess->aux_data;
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4237 va_list ap;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4238 fu16_t type1, type2;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4239 char *sn;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4240
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4241 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4242 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4243 sn = va_arg(ap, char *);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4244 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4245 va_end(ap);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4246
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4247 switch (type2) {
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4248 case 0x0000: { /* Text has been cleared */
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4249 serv_got_typing_stopped(gc, sn);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4250 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4251
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4252 case 0x0001: { /* Paused typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4253 serv_got_typing(gc, sn, 0, GAIM_TYPED);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4254 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4255
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4256 case 0x0002: { /* Typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4257 serv_got_typing(gc, sn, 0, GAIM_TYPING);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4258 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4259
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4260 default: {
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
4261 gaim_debug_error("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4262 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4263 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4264
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4265 return 1;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4266 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4267
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
4268 /*
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
4269 * We get this error when there was an error in the locate family. This
7259
22b5b81ca7e0 [gaim-migrate @ 7836]
Mark Doliner <mark@kingant.net>
parents: 7253
diff changeset
4270 * happens when you request info of someone who is offline.
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
4271 */
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4272 static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) {
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4273 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4274 va_list ap;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4275 fu16_t reason;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4276 char *destn;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4277
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4278 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4279 reason = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4280 destn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4281 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4282
7781
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
4283 if (destn == NULL)
7793
61b5d682ddb4 [gaim-migrate @ 8439]
Mark Doliner <mark@kingant.net>
parents: 7781
diff changeset
4284 return 1;
10560
33746d45bd0d [gaim-migrate @ 11938]
Mark Doliner <mark@kingant.net>
parents: 10540
diff changeset
4285
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4286 buf = g_strdup_printf(_("User information not available: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4287 if (!gaim_conv_present_error(destn, gaim_connection_get_account((GaimConnection*)sess->aux_data), buf)) {
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4288 g_free(buf);
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4289 buf = g_strdup_printf(_("User information for %s unavailable:"), destn);
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4290 gaim_notify_error(sess->aux_data, NULL, buf, (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4291 }
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4292 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4293
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4294 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4295 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4296
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4297 static int gaim_parse_userinfo(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4298 GaimConnection *gc = sess->aux_data;
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4299 GaimAccount *account = gaim_connection_get_account(gc);
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
4300 OscarData *od = gc->proto_data;
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4301 GString *str;
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4302 gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL, *title = NULL;
4791
e737e3e08b4a [gaim-migrate @ 5111]
Mark Doliner <mark@kingant.net>
parents: 4790
diff changeset
4303 va_list ap;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4304 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4305
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4306 va_start(ap, fr);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4307 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4308 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4309
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4310 str = g_string_new("");
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4311 g_string_append_printf(str, "<b>%s:</b> %s", _("Screen Name"), userinfo->sn);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4312 g_string_append_printf(str, "\n<br><b>%s</b>: %d%%", _("Warning Level"), (int)((userinfo->warnlevel/10.0) + 0.5));
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4313
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
4314 if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
4315 time_t t = userinfo->onlinesince - od->timeoffset;
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
4316 oscar_string_append(str, "\n<br>", _("Online Since"), ctime(&t));
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
4317 }
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
4318
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
4319 if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
4320 time_t t = userinfo->membersince - od->timeoffset;
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
4321 oscar_string_append(str, "\n<br>", _("Member Since"), ctime(&t));
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
4322 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4323
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4324 if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4325 tmp = gaim_str_seconds_to_string(userinfo->idletime*60);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
4326 oscar_string_append(str, "\n<br>", _("Idle"), tmp);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4327 g_free(tmp);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4328 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4329
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
4330 oscar_string_append_info(gc, str, "\n<br>", NULL, userinfo);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4331
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4332 if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4333 tmp = oscar_encoding_extract(userinfo->away_encoding);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4334 away_utf8 = oscar_encoding_to_utf8(tmp, userinfo->away, userinfo->away_len);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4335 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4336 if (away_utf8 != NULL) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4337 g_string_append_printf(str, "\n<hr>%s", away_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4338 g_free(away_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
4339 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4340 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4341
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4342 if ((userinfo->info_len > 0) && (userinfo->info != NULL) && (userinfo->info_encoding != NULL)) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4343 tmp = oscar_encoding_extract(userinfo->info_encoding);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4344 info_utf8 = oscar_encoding_to_utf8(tmp, userinfo->info, userinfo->info_len);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4345 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4346 if (info_utf8 != NULL) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4347 g_string_append_printf(str, "\n<hr>%s", info_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4348 g_free(info_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
4349 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4350 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4351
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
4352 tmp = gaim_str_sub_away_formatters(str->str, gaim_account_get_username(account));
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4353 g_string_free(str, TRUE);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4354 title = g_strdup_printf(_("Info for %s"), userinfo->sn);
9797
62eb9fe24692 [gaim-migrate @ 10665]
Luke Schierer <lschiere@pidgin.im>
parents: 9771
diff changeset
4355 gaim_notify_userinfo(gc, userinfo->sn, title, _("Buddy Information"), NULL, tmp, NULL, NULL);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4356 g_free(title);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
4357 g_free(tmp);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4358
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4359 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4360 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4361
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4362 static gboolean gaim_reqinfo_timeout_cb(void *data)
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4363 {
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4364 aim_session_t *sess = data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4365 GaimConnection *gc = sess->aux_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4366 OscarData *od = (OscarData *)gc->proto_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4367
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4368 aim_locate_dorequest(data);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4369 od->getinfotimer = 0;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4370
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4371 return FALSE;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4372 }
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4373
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4374 static int gaim_reqinfo_timeout(aim_session_t *sess, aim_frame_t *fr, ...)
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4375 {
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4376 GaimConnection *gc = sess->aux_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4377 OscarData *od = (OscarData *)gc->proto_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4378
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4379 /*
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4380 * Wait a little while then call aim_locate_dorequest(sess). This keeps
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4381 * us from hitting the rate limit due to request away messages and info
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4382 * too quickly.
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4383 */
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4384 if (od->getinfotimer == 0)
10198
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
4385 od->getinfotimer = gaim_timeout_add(1500, gaim_reqinfo_timeout_cb, sess);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4386
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4387 return 1;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4388 }
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4389
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4390 static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...)
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4391 {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4392 char *msg;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4393 fu16_t id;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4394 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4395
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4396 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4397 id = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4398 msg = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4399 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4400
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4401 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4402 "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
59b0377d18aa [gaim-migrate @ 2102]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
4403 if (id < 4)
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4404 gaim_notify_warning(sess->aux_data, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4405 _("Your AIM connection may be lost."), NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4406
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4407 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4408 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4409
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4410 static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4411 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4412 fu16_t type;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4413 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4414 OscarData *od = (OscarData *)gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4415
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4416 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4417 type = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4418
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4419 switch(type) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4420 case 0x0002: {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4421 fu8_t maxrooms;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4422 struct aim_chat_exchangeinfo *exchanges;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4423 int exchangecount, i;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4424
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4425 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4426 exchangecount = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4427 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4428
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4429 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4430 "chat info: Chat Rights:\n");
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4431 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4432 "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4433 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4434 "chat info: \tExchange List: (%d total)\n", exchangecount);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4435 for (i = 0; i < exchangecount; i++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4436 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4437 "chat info: \t\t%hu %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4438 exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4439 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4440 struct create_room *cr = od->create_rooms->data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4441 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4442 "creating room %s\n", cr->name);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
4443 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
4444 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4445 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
4446 g_free(cr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4447 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4448 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4449 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4450 case 0x0008: {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4451 char *fqcn, *name, *ck;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4452 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4453 fu8_t createperms;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4454 fu32_t createtime;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4455
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4456 fqcn = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4457 instance = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4458 exchange = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4459 flags = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4460 createtime = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4461 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4462 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4463 createperms = (fu8_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4464 unknown = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4465 name = va_arg(ap, char *);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4466 ck = va_arg(ap, char *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4467
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4468 gaim_debug_misc("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
4469 "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4470 fqcn,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4471 exchange, instance, flags,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4472 createtime,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4473 maxmsglen, maxoccupancy, createperms, unknown,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4474 name, ck);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4475 aim_chat_join(od->sess, od->conn, exchange, ck, instance);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4476 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4477 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4478 default:
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4479 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4480 "chatnav info: unknown type (%04hx)\n", type);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4481 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4482 }
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4483
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4484 va_end(ap);
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4485
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4486 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4487 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4488
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4489 static int gaim_conv_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4490 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4491 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4492 aim_userinfo_t *info;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4493 GaimConnection *g = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4494
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4495 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4496
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4497 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4498 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4499 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4500 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4501
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4502 c = find_oscar_chat_by_conn(g, fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4503 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4504 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4505
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4506 for (i = 0; i < count; i++)
9846
c28d5b45624e [gaim-migrate @ 10724]
Mark Doliner <mark@kingant.net>
parents: 9831
diff changeset
4507 gaim_conv_chat_add_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL, GAIM_CBFLAGS_NONE, TRUE);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4508
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4509 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4510 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4511
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4512 static int gaim_conv_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4513 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4514 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4515 aim_userinfo_t *info;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4516 GaimConnection *g = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4517
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4518 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4519
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4520 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4521 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4522 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4523 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4524
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4525 c = find_oscar_chat_by_conn(g, fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4526 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4527 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4528
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4529 for (i = 0; i < count; i++)
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4530 gaim_conv_chat_remove_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4531
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4532 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4533 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4534
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4535 static int gaim_conv_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4536 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4537 aim_userinfo_t *userinfo;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4538 struct aim_chat_roominfo *roominfo;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4539 char *roomname;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4540 int usercount;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4541 char *roomdesc;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4542 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4543 fu32_t creationtime;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4544 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4545 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4546
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4547 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4548 roominfo = va_arg(ap, struct aim_chat_roominfo *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4549 roomname = va_arg(ap, char *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4550 usercount= va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4551 userinfo = va_arg(ap, aim_userinfo_t *);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4552 roomdesc = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4553 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4554 creationtime = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4555 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4556 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4557 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4558 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4559 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4560
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4561 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4562 "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4563 maxmsglen, maxvisiblemsglen);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4564
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4565 ccon->maxlen = maxmsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4566 ccon->maxvis = maxvisiblemsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4567
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4568 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4569 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4570
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4571 static int gaim_conv_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4572 GaimConnection *gc = sess->aux_data;
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
4573 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn);
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
4574 gchar *utf8;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4575 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4576 aim_userinfo_t *info;
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
4577 int len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4578 char *msg;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4579 char *charset;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4580
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4581 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4582 info = va_arg(ap, aim_userinfo_t *);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4583 len = va_arg(ap, int);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4584 msg = va_arg(ap, char *);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4585 charset = va_arg(ap, char *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4586 va_end(ap);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4587
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
4588 utf8 = oscar_encoding_to_utf8(charset, msg, len);
8667
493e0df74180 [gaim-migrate @ 9419]
Mark Doliner <mark@kingant.net>
parents: 8666
diff changeset
4589 if (utf8 == NULL)
493e0df74180 [gaim-migrate @ 9419]
Mark Doliner <mark@kingant.net>
parents: 8666
diff changeset
4590 /* The conversion failed! */
8668
e71eef9dc37f [gaim-migrate @ 9420]
Mark Doliner <mark@kingant.net>
parents: 8667
diff changeset
4591 utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]"));
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
4592 serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL));
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
4593 g_free(utf8);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4594
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4595 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4596 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4597
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4598 static int gaim_email_parseupdate(aim_session_t *sess, aim_frame_t *fr, ...) {
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4599 va_list ap;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4600 GaimConnection *gc = sess->aux_data;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4601 struct aim_emailinfo *emailinfo;
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
4602 int havenewmail;
7297
ceda503e55a6 [gaim-migrate @ 7881]
Sean Egan <seanegan@gmail.com>
parents: 7285
diff changeset
4603 char *alertitle, *alerturl;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4604
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4605 va_start(ap, fr);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4606 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
4607 havenewmail = va_arg(ap, int);
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
4608 alertitle = va_arg(ap, char *);
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
4609 alerturl = va_arg(ap, char *);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4610 va_end(ap);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4611
9661
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
4612 if ((emailinfo != NULL) && gaim_account_get_check_mail(gc->account)) {
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
4613 gchar *to = g_strdup_printf("%s%s%s", gaim_account_get_username(gaim_connection_get_account(gc)),
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
4614 emailinfo->domain ? "@" : "",
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
4615 emailinfo->domain ? emailinfo->domain : "");
5542
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
4616 if (emailinfo->unread && havenewmail)
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
4617 gaim_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
5537
3becf79500d2 [gaim-migrate @ 5937]
Mark Doliner <mark@kingant.net>
parents: 5517
diff changeset
4618 g_free(to);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4619 }
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
4620
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
4621 if (alertitle)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4622 gaim_debug_misc("oscar", "Got an alert '%s' %s\n", alertitle, alerturl ? alerturl : "");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4623
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4624 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4625 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
4626
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4627 static int gaim_icon_error(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4628 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4629 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4630 char *sn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4631
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4632 sn = od->requesticon->data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4633 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4634 "removing %s from hash table\n", sn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4635 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4636 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4637
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4638 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
4639 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
4640 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4641
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4642 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4643 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4644
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4645 static int gaim_icon_parseicon(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4646 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4647 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4648 GSList *cur;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4649 va_list ap;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4650 char *sn;
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
4651 fu8_t *iconcsum, *icon;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
4652 fu16_t iconcsumlen, iconlen;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4653
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4654 va_start(ap, fr);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4655 sn = va_arg(ap, char *);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
4656 iconcsum = va_arg(ap, fu8_t *);
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
4657 iconcsumlen = va_arg(ap, int);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4658 icon = va_arg(ap, fu8_t *);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4659 iconlen = va_arg(ap, int);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4660 va_end(ap);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4661
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
4662 if (iconlen > 0) {
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
4663 char *b16;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4664 GaimBuddy *b = gaim_find_buddy(gc->account, sn);
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
4665 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
4666 sn, icon, iconlen);
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
4667 b16 = gaim_base16_encode(iconcsum, iconcsumlen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4668 if (b16) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
4669 gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
4670 g_free(b16);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4671 }
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
4672 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4673
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4674 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4675 while (cur) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4676 char *cursn = cur->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4677 if (!aim_sncmp(cursn, sn)) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4678 od->requesticon = g_slist_remove(od->requesticon, cursn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4679 free(cursn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4680 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4681 } else
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4682 cur = cur->next;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4683 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4684
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4685 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
4686 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
4687 od->icontimer = gaim_timeout_add(250, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4688
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4689 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4690 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4691
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4692 static gboolean gaim_icon_timerfunc(gpointer data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4693 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4694 OscarData *od = gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4695 aim_userinfo_t *userinfo;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4696 aim_conn_t *conn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4697
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4698 conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
4699 if (!conn) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
4700 if (!od->iconconnecting) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
4701 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
4702 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
4703 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4704 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4705 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4706
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4707 if (od->set_icon) {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4708 struct stat st;
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4709 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4710 if (iconfile == NULL) {
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
4711 aim_ssi_delicon(od->sess);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
4712 } else if (!g_stat(iconfile, &st)) {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4713 char *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
4714 FILE *file = g_fopen(iconfile, "rb");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4715 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
4716 /* XXX - Use g_file_get_contents()? */
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4717 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4718 fclose(file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4719 gaim_debug_info("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4720 "Uploading icon to icon server\n");
6879
594682101ba6 [gaim-migrate @ 7425]
Mark Doliner <mark@kingant.net>
parents: 6873
diff changeset
4721 aim_bart_upload(od->sess, buf, st.st_size);
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4722 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4723 gaim_debug_error("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4724 "Can't open buddy icon file!\n");
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4725 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4726 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4727 gaim_debug_error("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4728 "Can't stat buddy icon file!\n");
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4729 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4730 od->set_icon = FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4731 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4732
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4733 if (!od->requesticon) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4734 gaim_debug_misc("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4735 "no more icons to request\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4736 return FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4737 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
4738
7045
237ad253dd34 [gaim-migrate @ 7608]
Mark Doliner <mark@kingant.net>
parents: 7038
diff changeset
4739 userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4740 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4741 aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsum, userinfo->iconcsumlen);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4742 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4743 } else {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4744 char *sn = od->requesticon->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4745 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4746 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4747 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4748
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4749 return TRUE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4750 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
4751
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4752 /*
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4753 * Recieved in response to an IM sent with the AIM_IMFLAGS_ACK option.
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4754 */
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4755 static int gaim_parse_msgack(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4756 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4757 fu16_t type;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4758 char *sn;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4759
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4760 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4761 type = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4762 sn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4763 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4764
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4765 gaim_debug_info("oscar", "Sent message to %s.\n", sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4766
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4767 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4768 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4769
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4770 static int gaim_parse_ratechange(aim_session_t *sess, aim_frame_t *fr, ...) {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4771 static const char *codes[5] = {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4772 "invalid",
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4773 "change",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4774 "warning",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4775 "limit",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4776 "limit cleared",
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4777 };
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4778 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4779 fu16_t code, rateclass;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4780 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4781
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4782 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4783 code = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4784 rateclass= (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4785 windowsize = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4786 clear = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4787 alert = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4788 limit = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4789 disconnect = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4790 currentavg = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4791 maxavg = va_arg(ap, fu32_t);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4792 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4793
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4794 gaim_debug_misc("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
4795 "rate %s (param ID 0x%04hx): curavg = %u, maxavg = %u, alert at %u, "
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
4796 "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4797 (code < 5) ? codes[code] : codes[0],
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4798 rateclass,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4799 currentavg, maxavg,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4800 alert, clear,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4801 limit, disconnect,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4802 windowsize);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4803
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4804 /* XXX fix these values */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4805 if (code == AIM_RATE_CODE_CHANGE) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4806 if (currentavg >= clear)
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4807 aim_conn_setlatency(fr->conn, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4808 } else if (code == AIM_RATE_CODE_WARNING) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4809 aim_conn_setlatency(fr->conn, windowsize/4);
2909
48ec70928d7f [gaim-migrate @ 2922]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2906
diff changeset
4810 } else if (code == AIM_RATE_CODE_LIMIT) {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4811 gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."),
6040
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
4812 _("The last action you attempted could not be "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
4813 "performed because you are over the rate limit. "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
4814 "Please wait 10 seconds and try again."));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4815 aim_conn_setlatency(fr->conn, windowsize/2);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4816 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4817 aim_conn_setlatency(fr->conn, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4818 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4819
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4820 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4821 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4822
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4823 static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) {
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4824 GaimConnection *gc = sess->aux_data;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4825 GaimAccount *account = gaim_connection_get_account(gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4826 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4827 fu16_t newevil;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4828 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4829
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4830 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4831 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4832 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4833 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4834
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4835 /* XXX - What's with the + 0.5? */
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4836 gaim_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4837
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4838 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4839 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4840
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4841 static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) {
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4842 GaimConnection *gc = sess->aux_data;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4843 GaimAccount *account = gaim_connection_get_account(gc);
10152
3cec08c6179c [gaim-migrate @ 11229]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10130
diff changeset
4844 GaimPresence *presence = gaim_account_get_presence(account);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4845 int warning_level;
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4846 va_list ap;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4847 aim_userinfo_t *info;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4848
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4849 va_start(ap, fr);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4850 info = va_arg(ap, aim_userinfo_t *);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4851 va_end(ap);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4852
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4853 warning_level = info->warnlevel/10.0 + 0.5;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4854
10152
3cec08c6179c [gaim-migrate @ 11229]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10130
diff changeset
4855 gaim_presence_set_warning_level(presence, warning_level);
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4856
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4857 return 1;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4858 }
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
4859
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4860 static int gaim_connerr(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4861 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4862 OscarData *od = gc->proto_data;
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4863 va_list ap;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4864 fu16_t code;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4865 char *msg;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4866
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4867 va_start(ap, fr);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4868 code = (fu16_t)va_arg(ap, int);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4869 msg = va_arg(ap, char *);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4870 va_end(ap);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4871
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
4872 gaim_debug_info("oscar", "Disconnected. Code is 0x%04x and msg is %s\n",
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4873 code, (msg != NULL ? msg : ""));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4874
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4875 g_return_val_if_fail(fr != NULL, 1);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4876 g_return_val_if_fail(fr->conn != NULL, 1);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4877
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4878 if (fr->conn->type == AIM_CONN_TYPE_BOS) {
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
4879 if (code == 0x0001) {
6113
30d4c432101c [gaim-migrate @ 6575]
Mark Doliner <mark@kingant.net>
parents: 6066
diff changeset
4880 gc->wants_to_die = TRUE;
10715
c6bf026fcab9 [gaim-migrate @ 12309]
Mark Doliner <mark@kingant.net>
parents: 10683
diff changeset
4881 gaim_connection_error(gc, _("You have signed on from another location."));
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
4882 } else {
5579
e0146fcc4718 [gaim-migrate @ 5983]
Sean Egan <seanegan@gmail.com>
parents: 5577
diff changeset
4883 gaim_connection_error(gc, _("You have been signed off for an unknown reason."));
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
4884 }
4666
f8895ad921ee [gaim-migrate @ 4977]
Mark Doliner <mark@kingant.net>
parents: 4665
diff changeset
4885 od->killme = TRUE;
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4886 } else if (fr->conn->type == AIM_CONN_TYPE_CHAT) {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4887 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4888 GaimConversation *conv;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4889
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4890 cc = find_oscar_chat_by_conn(gc, fr->conn);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4891 conv = gaim_find_chat(gc, cc->id);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4892
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4893 if (conv != NULL)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4894 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4895 gchar *buf;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4896 buf = g_strdup_printf(_("You have been disconnected from chat "
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4897 "room %s."), cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4898 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4899 g_free(buf);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4900 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
4901 oscar_chat_kill(gc, cc);
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4902 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4903
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4904 return 1;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4905 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
4906
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
4907 static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4908 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4909
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
4910 aim_reqpersonalinfo(sess, fr->conn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4911
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4912 #ifndef NOSSI
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4913 gaim_debug_info("oscar", "ssi: requesting rights and list\n");
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4914 aim_ssi_reqrights(sess);
6350
34c07f5f34a0 [gaim-migrate @ 6849]
Mark Doliner <mark@kingant.net>
parents: 6318
diff changeset
4915 aim_ssi_reqdata(sess);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4916 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4917
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4918 aim_locate_reqrights(sess);
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
4919 aim_buddylist_reqrights(sess, fr->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4920 aim_im_reqparams(sess);
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4921 aim_bos_reqrights(sess, fr->conn); /* XXX - Don't call this with ssi */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4922
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4923 #ifdef NOSSI
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4924 gaim_debug_info("oscar", "bos: requesting rights\n");
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4925 aim_bos_reqrights(sess, fr->conn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4926 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4927 aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE | AIM_PRIVFLAGS_ALLOWMEMBERSINCE);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4928 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4929
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4930 gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS);
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4931
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4932 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4933 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4934
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
4935 static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4936 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4937 OscarData *od = gc->proto_data;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4938
6905
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
4939 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0003, gaim_info_change, 0);
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
4940 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0005, gaim_info_change, 0);
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
4941 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0007, gaim_account_confirm, 0);
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
4942
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
4943 aim_clientready(sess, fr->conn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4944 gaim_debug_info("oscar", "connected to admin\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4945
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4946 if (od->chpass) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4947 gaim_debug_info("oscar", "changing password\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
4948 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4949 g_free(od->oldp);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4950 od->oldp = NULL;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4951 g_free(od->newp);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4952 od->newp = NULL;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4953 od->chpass = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4954 }
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4955 if (od->setnick) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4956 gaim_debug_info("oscar", "formatting screen name\n");
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4957 aim_admin_setnick(sess, fr->conn, od->newsn);
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4958 g_free(od->newsn);
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4959 od->newsn = NULL;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4960 od->setnick = FALSE;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4961 }
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4962 if (od->conf) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4963 gaim_debug_info("oscar", "confirming account\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
4964 aim_admin_reqconfirm(sess, fr->conn);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4965 od->conf = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4966 }
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4967 if (od->reqemail) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4968 gaim_debug_info("oscar", "requesting email\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
4969 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4970 od->reqemail = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4971 }
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4972 if (od->setemail) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4973 gaim_debug_info("oscar", "setting email\n");
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4974 aim_admin_setemail(sess, fr->conn, od->email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4975 g_free(od->email);
5497
3c7748b24410 [gaim-migrate @ 5893]
Mark Doliner <mark@kingant.net>
parents: 5493
diff changeset
4976 od->email = NULL;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4977 od->setemail = FALSE;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4978 }
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4979
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4980 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4981 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4982
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4983 static int gaim_icbm_param_info(aim_session_t *sess, aim_frame_t *fr, ...) {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4984 struct aim_icbmparameters *params;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4985 va_list ap;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4986
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4987 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4988 params = va_arg(ap, struct aim_icbmparameters *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4989 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4990
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4991 /* XXX - evidently this crashes on solaris. i have no clue why
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4992 gaim_debug_misc("oscar", "ICBM Parameters: maxchannel = %hu, default flags = 0x%08lx, max msg len = %hu, "
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
4993 "max sender evil = %f, max receiver evil = %f, min msg interval = %u\n",
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4994 params->maxchan, params->flags, params->maxmsglen,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4995 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4996 params->minmsginterval);
2427
5bc3b39fc0a5 [gaim-migrate @ 2440]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2421
diff changeset
4997 */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4998
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4999 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5000 params->flags = 0x0000000b;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5001 params->maxmsglen = 8000;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5002 params->minmsginterval = 0;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5003
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5004 aim_im_setparams(sess, params);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5005
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5006 return 1;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5007 }
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5008
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5009 static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...)
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5010 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5011 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5012 OscarData *od = (OscarData *)gc->proto_data;
5306
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
5013 va_list ap;
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
5014 fu16_t maxsiglen;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5015
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5016 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5017 maxsiglen = (fu16_t) va_arg(ap, int);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5018 va_end(ap);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5019
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5020 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5021 "locate rights: max sig len = %d\n", maxsiglen);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5022
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5023 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5024
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5025 if (od->icq)
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5026 aim_locate_setcaps(od->sess, caps_icq);
5301
d846a933299c [gaim-migrate @ 5673]
Mark Doliner <mark@kingant.net>
parents: 5300
diff changeset
5027 else
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5028 aim_locate_setcaps(od->sess, caps_aim);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5029 oscar_set_info(gc, gc->account->user_info);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5030
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5031 return 1;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5032 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5033
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5034 static int gaim_parse_buddyrights(aim_session_t *sess, aim_frame_t *fr, ...) {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5035 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5036 fu16_t maxbuddies, maxwatchers;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5037 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5038 OscarData *od = (OscarData *)gc->proto_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5039
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5040 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5041 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5042 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5043 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5044
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5045 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5046 "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5047
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5048 od->rights.maxbuddies = (guint)maxbuddies;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5049 od->rights.maxwatchers = (guint)maxwatchers;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5050
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5051 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5052 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5053
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5054 static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5055 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5056 OscarData *od = (OscarData *)gc->proto_data;
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5057 GaimAccount *account = gaim_connection_get_account(gc);
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5058 va_list ap;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5059 fu16_t maxpermits, maxdenies;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5060
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5061 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5062 maxpermits = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5063 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5064 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5065
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5066 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5067 "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5068
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5069 od->rights.maxpermits = (guint)maxpermits;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5070 od->rights.maxdenies = (guint)maxdenies;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5071
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
5072 gaim_connection_set_state(gc, GAIM_CONNECTED);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5073
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5074 gaim_debug_info("oscar", "buddy list loaded\n");
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5075
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
5076 aim_clientready(sess, fr->conn);
5948
1bebb8345bde [gaim-migrate @ 6392]
Mark Doliner <mark@kingant.net>
parents: 5920
diff changeset
5077 aim_srv_setavailmsg(sess, NULL);
7474
2bdacd38528c [gaim-migrate @ 8087]
Mark Doliner <mark@kingant.net>
parents: 7465
diff changeset
5078 aim_srv_setidle(sess, 0);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5079
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5080 if (od->icq) {
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5081 aim_icq_reqofflinemsgs(sess);
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5082 aim_icq_setsecurity(sess,
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5083 gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5084 gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5085 gaim_account_get_bool(account, "hide_ip", OSCAR_DEFAULT_HIDE_IP));
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5086 }
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5087
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
5088 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
c5ce82228a2f [gaim-migrate @ 4317]
Mark Doliner <mark@kingant.net>
parents: 4076
diff changeset
5089 if (sess->authinfo->email)
c5ce82228a2f [gaim-migrate @ 4317]
Mark Doliner <mark@kingant.net>
parents: 4076
diff changeset
5090 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5091
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5092 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5093 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5094
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5095 static int gaim_offlinemsg(aim_session_t *sess, aim_frame_t *fr, ...) {
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5096 va_list ap;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5097 struct aim_icq_offlinemsg *msg;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5098 struct aim_incomingim_ch4_args args;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5099 time_t t;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5100
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5101 va_start(ap, fr);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5102 msg = va_arg(ap, struct aim_icq_offlinemsg *);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5103 va_end(ap);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5104
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5105 gaim_debug_info("oscar",
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5106 "Received offline message. Converting to channel 4 ICBM...\n");
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5107 args.uin = msg->sender;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5108 args.type = msg->type;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
5109 args.flags = msg->flags;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
5110 args.msglen = msg->msglen;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5111 args.msg = msg->msg;
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5112 t = gaim_time_build(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5113 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5114
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5115 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5116 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5117
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5118 static int gaim_offlinemsgdone(aim_session_t *sess, aim_frame_t *fr, ...)
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5119 {
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5120 aim_icq_ackofflinemsgs(sess);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5121 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5122 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5123
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5124 #if 0
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5125 /*
7465
dedbfdc7ce65 [gaim-migrate @ 8078]
Mark Doliner <mark@kingant.net>
parents: 7422
diff changeset
5126 * Update, 2003-11-09:
dedbfdc7ce65 [gaim-migrate @ 8078]
Mark Doliner <mark@kingant.net>
parents: 7422
diff changeset
5127 * Joseph S. Myers, a gcc dude, fixed this for gcc 3.4! Rock on!
dedbfdc7ce65 [gaim-migrate @ 8078]
Mark Doliner <mark@kingant.net>
parents: 7422
diff changeset
5128 *
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5129 * It may not be my place to do this, but...
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5130 * I feel pretty strongly that the "last 2 digits" warning is ridiculously
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5131 * stupid, and should not exist for % switches (%x in our case) that request
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5132 * a year in the preferred representation for the current locale. For that
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5133 * reason I've chosen to not use this workaround (n., see kluge).
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5134 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5135 * I have a date. I want to show it to the user in the "preferred" way.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5136 * Whether that displays a 2 digit year is perfectly fine--after all, it's
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5137 * what the locale wanted.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5138 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5139 * If I have a necessity for a full representation of the year in the current
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5140 * locale, then I'll use a switch that returns a full representation of the
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5141 * year.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5142 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5143 * If you think the preferred locale should show 4 digits instead of 2 digits
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5144 * (because you're anal, or whatever), then change the f***ing locale.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5145 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5146 * I guess the bottom line is--I'm trying to show a date to the user how they
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5147 * prefer to see it, why the hell does gcc want me to change that?
7389
22ed0a0c003d [gaim-migrate @ 7984]
Mark Doliner <mark@kingant.net>
parents: 7388
diff changeset
5148 *
22ed0a0c003d [gaim-migrate @ 7984]
Mark Doliner <mark@kingant.net>
parents: 7388
diff changeset
5149 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3190
22ed0a0c003d [gaim-migrate @ 7984]
Mark Doliner <mark@kingant.net>
parents: 7388
diff changeset
5150 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8714
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5151 */
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5152
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5153 /*
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5154 * This function was recommended by the STRFTIME(3) man page to remove the
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5155 * "last 2 digits" warning.
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5156 */
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
5157 static size_t my_strftime(char *s, size_t max, const char *fmt,
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5158 const struct tm *tm)
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5159 {
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5160 return strftime(s, max, fmt, tm);
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5161 }
10636
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5162
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5163 /*
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5164 * Before even realizing this was here, I went and did the same thing in util.c.
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5165 *
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5166 * Use gaim_strftime()
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5167 */
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5168
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5169 #endif
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5170
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5171 static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5172 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5173 GaimConnection *gc = sess->aux_data;
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5174 OscarData *od = (OscarData *)gc->proto_data;
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5175 GaimBuddy *buddy;
8853
60cc86a15eed [gaim-migrate @ 9620]
Nathan Walp <nwalp@pidgin.im>
parents: 8838
diff changeset
5176 struct buddyinfo *bi = NULL;
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5177 gchar who[16];
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5178 GString *str;
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5179 gchar *primary, *utf8;
9634
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
5180 const gchar *alias;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5181 va_list ap;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5182 struct aim_icq_info *info;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5183
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5184 va_start(ap, fr);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5185 info = va_arg(ap, struct aim_icq_info *);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5186 va_end(ap);
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5187
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5188 if (!info->uin)
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5189 return 0;
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5190
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5191 str = g_string_sized_new(100);
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
5192 g_snprintf(who, sizeof(who), "%u", info->uin);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5193 buddy = gaim_find_buddy(gaim_connection_get_account(gc), who);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5194 if (buddy != NULL)
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5195 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(buddy->account, buddy->name));
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5196
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5197 g_string_append_printf(str, "<b>%s:</b> %s", _("UIN"), who);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5198 oscar_string_append(str, "\n<br>", _("Nick"), info->nick);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5199 if ((bi != NULL) && (bi->ipaddr != 0)) {
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5200 char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5201 (bi->ipaddr & 0xff000000) >> 24,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5202 (bi->ipaddr & 0x00ff0000) >> 16,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5203 (bi->ipaddr & 0x0000ff00) >> 8,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5204 (bi->ipaddr & 0x000000ff));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5205 oscar_string_append(str, "\n<br>", _("IP Address"), tstr);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5206 g_free(tstr);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5207 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5208 oscar_string_append(str, "\n<br>", _("First Name"), info->first);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5209 oscar_string_append(str, "\n<br>", _("Last Name"), info->last);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5210 if (info->email && info->email[0] && (utf8 = gaim_utf8_try_convert(info->email))) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5211 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("Email Address"), utf8, utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5212 g_free(utf8);
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
5213 }
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
5214 if (info->numaddresses && info->email2) {
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
5215 int i;
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
5216 for (i = 0; i < info->numaddresses; i++) {
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5217 if (info->email2[i] && info->email2[i][0] && (utf8 = gaim_utf8_try_convert(info->email2[i]))) {
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
5218 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("Email Address"), utf8, utf8);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5219 g_free(utf8);
4643
2b37c498b4bd [gaim-migrate @ 4953]
Nathan Walp <nwalp@pidgin.im>
parents: 4642
diff changeset
5220 }
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
5221 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5222 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5223 oscar_string_append(str, "\n<br>", _("Mobile Phone"), info->mobile);
10022
00a7ccf8ccd7 [gaim-migrate @ 10954]
Mark Doliner <mark@kingant.net>
parents: 10009
diff changeset
5224 if (info->gender != 0)
00a7ccf8ccd7 [gaim-migrate @ 10954]
Mark Doliner <mark@kingant.net>
parents: 10009
diff changeset
5225 oscar_string_append(str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male"));
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5226 if (info->birthyear || info->birthmonth || info->birthday) {
4627
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
5227 char date[30];
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
5228 struct tm tm;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
5229 tm.tm_mday = (int)info->birthday;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
5230 tm.tm_mon = (int)info->birthmonth-1;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
5231 tm.tm_year = (int)info->birthyear-1900;
10636
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5232 gaim_strftime(date, sizeof(date), "%x", &tm);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5233 oscar_string_append(str, "\n<br>", _("Birthday"), date);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5234 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5235 if (info->age) {
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5236 char age[5];
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5237 snprintf(age, sizeof(age), "%hhd", info->age);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5238 oscar_string_append(str, "\n<br>", _("Age"), age);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
5239 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5240 if (info->personalwebpage && info->personalwebpage[0] && (utf8 = gaim_utf8_try_convert(info->personalwebpage))) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5241 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Personal Web Page"), utf8, utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5242 g_free(utf8);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
5243 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5244 if (info->info && info->info[0] && (utf8 = gaim_utf8_try_convert(info->info))) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5245 g_string_append_printf(str, "<hr><b>%s:</b><br>%s", _("Additional Information"), utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5246 g_free(utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5247 }
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
5248 g_string_append_printf(str, "<hr>");
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
5249 if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5250 g_string_append_printf(str, "<b>%s:</b>", _("Home Address"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5251 oscar_string_append(str, "\n<br>", _("Address"), info->homeaddr);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5252 oscar_string_append(str, "\n<br>", _("City"), info->homecity);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5253 oscar_string_append(str, "\n<br>", _("State"), info->homestate);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5254 oscar_string_append(str, "\n<br>", _("Zip Code"), info->homezip);
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
5255 g_string_append_printf(str, "\n<hr>");
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5256 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
5257 if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5258 g_string_append_printf(str, "<b>%s:</b>", _("Work Address"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5259 oscar_string_append(str, "\n<br>", _("Address"), info->workaddr);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5260 oscar_string_append(str, "\n<br>", _("City"), info->workcity);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5261 oscar_string_append(str, "\n<br>", _("State"), info->workstate);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5262 oscar_string_append(str, "\n<br>", _("Zip Code"), info->workzip);
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
5263 g_string_append_printf(str, "\n<hr>");
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5264 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
5265 if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5266 g_string_append_printf(str, "<b>%s:</b>", _("Work Information"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5267 oscar_string_append(str, "\n<br>", _("Company"), info->workcompany);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5268 oscar_string_append(str, "\n<br>", _("Division"), info->workdivision);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5269 oscar_string_append(str, "\n<br>", _("Position"), info->workposition);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5270 if (info->workwebpage && info->workwebpage[0] && (utf8 = gaim_utf8_try_convert(info->workwebpage))) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5271 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5272 g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5273 }
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
5274 g_string_append_printf(str, "\n<hr>");
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5275 }
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5276
9634
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
5277 if (buddy != NULL)
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
5278 alias = gaim_buddy_get_alias(buddy);
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
5279 else
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
5280 alias = who;
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
5281 primary = g_strdup_printf(_("ICQ Info for %s"), alias);
9810
f64e382d5334 [gaim-migrate @ 10681]
Mark Doliner <mark@kingant.net>
parents: 9809
diff changeset
5282 gaim_notify_userinfo(gc, who, NULL, primary, NULL, str->str, NULL, NULL);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5283 g_free(primary);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5284 g_string_free(str, TRUE);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5285
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5286 return 1;
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5287 }
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5288
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5289 static int gaim_icqalias(aim_session_t *sess, aim_frame_t *fr, ...)
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5290 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5291 GaimConnection *gc = sess->aux_data;
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
5292 gchar who[16], *utf8;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5293 GaimBuddy *b;
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5294 va_list ap;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5295 struct aim_icq_info *info;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5296
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5297 va_start(ap, fr);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5298 info = va_arg(ap, struct aim_icq_info *);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5299 va_end(ap);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5300
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5301 if (info->uin && info->nick && info->nick[0] && (utf8 = gaim_utf8_try_convert(info->nick))) {
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
5302 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
5303 serv_got_alias(gc, who, utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5304 if ((b = gaim_find_buddy(gc->account, who))) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
5305 gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5306 }
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
5307 g_free(utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5308 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5309
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5310 return 1;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5311 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5312
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5313 static int gaim_popup(aim_session_t *sess, aim_frame_t *fr, ...)
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5314 {
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5315 GaimConnection *gc = sess->aux_data;
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5316 gchar *text;
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5317 va_list ap;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5318 char *msg, *url;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5319 fu16_t wid, hei, delay;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5320
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5321 va_start(ap, fr);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5322 msg = va_arg(ap, char *);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5323 url = va_arg(ap, char *);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5324 wid = (fu16_t) va_arg(ap, int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5325 hei = (fu16_t) va_arg(ap, int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5326 delay = (fu16_t) va_arg(ap, int);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5327 va_end(ap);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5328
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5329 text = g_strdup_printf("%s<br><a href=\"%s\">%s</a>", msg, url, url);
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5330 gaim_notify_formatted(gc, NULL, _("Pop-Up Message"), NULL, text, NULL, NULL);
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5331 g_free(text);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5332
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5333 return 1;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5334 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5335
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5336 static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...)
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
5337 {
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5338 GaimConnection *gc = sess->aux_data;
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5339 gchar *secondary;
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5340 gchar **screennames;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5341 int i, num;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5342 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5343 char *email, *SNs;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5344
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5345 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5346 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5347 num = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5348 SNs = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5349 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5350
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5351 /* TODO: Need to use ngettext() here */
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
5352 secondary = g_strdup_printf(_("The following screen names are associated with %s"), email);
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5353
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5354 screennames = g_malloc((num + 1) * sizeof(gchar *));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5355 for (i = 0; i < num; i++)
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5356 screennames[i] = g_strdup(&SNs[i * (MAXSNLEN + 1)]);
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5357 screennames[num] = NULL;
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5358
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5359 gaim_notify_searchresults(gc, NULL, NULL, secondary,
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5360 (const char **)screennames, NULL, NULL);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5361
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5362 g_free(secondary);
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
5363 g_strfreev(screennames);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5364
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5365 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5366 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5367
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5368 static int gaim_parse_searcherror(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5369 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5370 char *email;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
5371 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5372
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5373 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5374 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5375 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5376
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5377 buf = g_strdup_printf(_("No results found for email address %s"), email);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5378 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
5379 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5380
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5381 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5382 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5383
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5384 static int gaim_account_confirm(aim_session_t *sess, aim_frame_t *fr, ...) {
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5385 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5386 fu16_t status;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5387 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5388 char msg[256];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5389
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5390 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5391 status = (fu16_t) va_arg(ap, unsigned int); /* status code of confirmation request */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5392 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5393
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5394 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5395 "account confirmation returned status 0x%04x (%s)\n", status,
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5396 status ? "unknown" : "email sent");
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5397 if (!status) {
5302
6dfcd7dbecde [gaim-migrate @ 5674]
Luke Schierer <lschiere@pidgin.im>
parents: 5301
diff changeset
5398 g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."),
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5399 gaim_account_get_username(gaim_connection_get_account(gc)));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5400 gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5401 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5402
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5403 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5404 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5405
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5406 static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5407 GaimConnection *gc = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5408 va_list ap;
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5409 fu16_t perms, err;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5410 char *url, *sn, *email;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5411 int change;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5412
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5413 va_start(ap, fr);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5414 change = va_arg(ap, int);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5415 perms = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5416 err = (fu16_t) va_arg(ap, unsigned int);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5417 url = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5418 sn = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5419 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5420 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5421
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5422 gaim_debug_misc("oscar",
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5423 "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5424 change ? "change" : "request", perms, err,
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5425 (url != NULL) ? url : "(null)",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5426 (sn != NULL) ? sn : "(null)",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5427 (email != NULL) ? email : "(null)");
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5428
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5429 if ((err > 0) && (url != NULL)) {
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5430 char *dialog_msg;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5431 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5432 switch (err) {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5433 case 0x0001: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5434 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name differs from the original."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5435 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5436 case 0x0006: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5437 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name ends in a space."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5438 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5439 case 0x000b: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5440 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name is too long."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5441 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5442 case 0x001d: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5443 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5444 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5445 case 0x0021: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5446 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5447 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5448 case 0x0023: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5449 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address is invalid."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5450 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5451 default: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5452 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5453 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5454 }
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5455 gaim_notify_error(gc, NULL, dialog_top, dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5456 g_free(dialog_top);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5457 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5458 return 1;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5459 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5460
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5461 if (sn != NULL) {
4585
2427d847e39c [gaim-migrate @ 4869]
Luke Schierer <lschiere@pidgin.im>
parents: 4508
diff changeset
5462 char *dialog_msg = g_strdup_printf(_("Your screen name is currently formatted as follows:\n%s"), sn);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5463 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5464 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5465 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5466
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
5467 if (email != NULL) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5468 char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"),
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5469 gaim_account_get_username(gaim_connection_get_account(gc)), email);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5470 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
5471 g_free(dialog_msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5472 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5473
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5474 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5475 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5476
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5477 static void oscar_keepalive(GaimConnection *gc) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5478 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5479 aim_flap_nop(od->sess, od->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5480 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5481
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
5482 static int oscar_send_typing(GaimConnection *gc, const char *name, int typing) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5483 OscarData *od = (OscarData *)gc->proto_data;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
5484 struct oscar_direct_im *dim = oscar_direct_im_find(od, name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
5485 if (dim && dim->connected)
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5486 if (typing == GAIM_TYPING)
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5487 aim_odc_send_typing(od->sess, dim->conn, 0x0002);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5488 else if (typing == GAIM_TYPED)
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5489 aim_odc_send_typing(od->sess, dim->conn, 0x0001);
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5490 else
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5491 aim_odc_send_typing(od->sess, dim->conn, 0x0000);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5492 else {
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5493 /* Don't send if this turkey is in our deny list */
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5494 GSList *list;
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5495 for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5496 if (!list) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5497 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name));
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5498 if (bi && bi->typingnot) {
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5499 if (typing == GAIM_TYPING)
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5500 aim_im_sendmtn(od->sess, 0x0001, name, 0x0002);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5501 else if (typing == GAIM_TYPED)
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5502 aim_im_sendmtn(od->sess, 0x0001, name, 0x0001);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5503 else
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5504 aim_im_sendmtn(od->sess, 0x0001, name, 0x0000);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
5505 }
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5506 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5507 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5508 return 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5509 }
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5510
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5511 static int gaim_odc_send_im(aim_session_t *, aim_conn_t *, const char *, GaimConvImFlags);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5512
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5513 static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, GaimConvImFlags imflags) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5514 OscarData *od = (OscarData *)gc->proto_data;
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
5515 GaimAccount *account = gaim_connection_get_account(gc);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
5516 struct oscar_direct_im *dim = oscar_direct_im_find(od, name);
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
5517 int ret = 0;
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
5518 const char *iconfile = gaim_account_get_buddy_icon(account);
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5519 char *tmpmsg = NULL;
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
5520
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
5521 if (dim && dim->connected) {
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
5522 /* If we're directly connected, send a direct IM */
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5523 ret = gaim_odc_send_im(od->sess, dim->conn, message, imflags);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5524 } else {
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5525 struct buddyinfo *bi;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5526 struct aim_sendimext_args args;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5527 struct stat st;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
5528 gsize len;
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
5529 GaimConversation *conv;
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
5530
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
5531 conv = gaim_find_conversation_with_account(GAIM_CONV_IM, name, account);
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5532
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5533 if (strstr(message, "<IMG "))
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5534 gaim_conversation_write(conv, "",
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5535 _("Your IM Image was not sent. "
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5536 "You must be Direct Connected to send IM Images."),
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5537 GAIM_MESSAGE_ERROR, time(NULL));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5538
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
5539 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, name));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5540 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5541 bi = g_new0(struct buddyinfo, 1);
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
5542 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, name)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5543 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5544
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5545 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
5546 if (od->icq) {
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
5547 args.features = features_icq;
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
5548 args.featureslen = sizeof(features_icq);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5549 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
5550 } else {
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
5551 args.features = features_aim;
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
5552 args.featureslen = sizeof(features_aim);
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
5553
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5554 if (imflags & GAIM_CONV_IM_AUTO_RESP)
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
5555 args.flags |= AIM_IMFLAGS_AWAY;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
5556 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5557
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5558 if (bi->ico_need) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5559 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5560 "Sending buddy icon request with message\n");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5561 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5562 bi->ico_need = FALSE;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5563 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5564
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
5565 if (iconfile && !g_stat(iconfile, &st)) {
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
5566 FILE *file = g_fopen(iconfile, "rb");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5567 if (file) {
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5568 char *buf = g_malloc(st.st_size);
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
5569 /* XXX - Use g_file_get_contents()? */
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5570 fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5571 fclose(file);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5572
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5573 args.iconlen = st.st_size;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5574 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5575 args.iconstamp = st.st_mtime;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5576
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
5577 if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) {
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5578 bi->ico_informed = FALSE;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
5579 bi->ico_sent = FALSE;
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
5580 }
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5581
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5582 if (!bi->ico_informed) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5583 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5584 "Claiming to have a buddy icon\n");
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5585 args.flags |= AIM_IMFLAGS_HASICON;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5586 bi->ico_me_len = args.iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5587 bi->ico_me_csum = args.iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5588 bi->ico_me_time = args.iconstamp;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5589 bi->ico_informed = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5590 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
5591
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5592 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5593 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5594 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5595
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5596 args.destsn = name;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5597
8985
8abc99ed5d93 [gaim-migrate @ 9760]
Mark Doliner <mark@kingant.net>
parents: 8984
diff changeset
5598 /*
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5599 * If we're IMing an ICQ user from an ICQ account, then strip HTML
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5600 * and use \r\n as the newline character.
8985
8abc99ed5d93 [gaim-migrate @ 9760]
Mark Doliner <mark@kingant.net>
parents: 8984
diff changeset
5601 */
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5602 if (aim_sn_is_icq(gaim_account_get_username(account))) {
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5603 if (aim_sn_is_icq(name))
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5604 /* From ICQ to ICQ */
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
5605 tmpmsg = g_strdup(message);
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5606 else
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5607 /* From ICQ to AIM */
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
5608 tmpmsg = g_markup_escape_text(message, -1);
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
5609 } else {
10785
4a2f361f49b9 [gaim-migrate @ 12423]
Mark Doliner <mark@kingant.net>
parents: 10783
diff changeset
5610 /* From AIM to AIM and AIM to ICQ */
4a2f361f49b9 [gaim-migrate @ 12423]
Mark Doliner <mark@kingant.net>
parents: 10783
diff changeset
5611 tmpmsg = g_strdup(message);
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
5612 }
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
5613 len = strlen(tmpmsg);
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
5614
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
5615 gaim_plugin_oscar_convert_to_best_encoding(gc, name, tmpmsg, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
5616 gaim_debug_info("oscar", "Sending IM, charset=0x%04hx, charsubset=0x%04hx, length=%d\n",
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
5617 args.charset, args.charsubset, args.msglen);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5618 ret = aim_im_sendch1_ext(od->sess, &args);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
5619 g_free((char *)args.msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5620 }
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
5621
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
5622 g_free(tmpmsg);
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
5623
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
5624 if (ret >= 0)
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
5625 return 1;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
5626
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
5627 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5628 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5629
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5630 static void oscar_get_info(GaimConnection *gc, const char *name) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5631 OscarData *od = (OscarData *)gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5632
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5633 if (od->icq && aim_sn_is_icq(name))
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5634 aim_icq_getallinfo(od->sess, name);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5635 else
7235
03f22e564311 [gaim-migrate @ 7810]
Mark Doliner <mark@kingant.net>
parents: 7173
diff changeset
5636 aim_locate_getinfoshort(od->sess, name, 0x00000003);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5637 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5638
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
5639 #if 0
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5640 static void oscar_set_dir(GaimConnection *gc, const char *first, const char *middle, const char *last,
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3458
diff changeset
5641 const char *maiden, const char *city, const char *state, const char *country, int web) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5642 /* XXX - some of these things are wrong, but i'm lazy */
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5643 OscarData *od = (OscarData *)gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5644 aim_locate_setdirinfo(od->sess, first, middle, last,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5645 maiden, NULL, NULL, city, state, NULL, 0, web);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5646 }
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
5647 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5648
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5649 static void oscar_set_idle(GaimConnection *gc, int time) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5650 OscarData *od = (OscarData *)gc->proto_data;
7474
2bdacd38528c [gaim-migrate @ 8087]
Mark Doliner <mark@kingant.net>
parents: 7465
diff changeset
5651 aim_srv_setidle(od->sess, time);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5652 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5653
5954
fccc33d4b8fa [gaim-migrate @ 6398]
Mark Doliner <mark@kingant.net>
parents: 5948
diff changeset
5654 static void oscar_set_info(GaimConnection *gc, const char *text) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5655 OscarData *od = (OscarData *)gc->proto_data;
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
5656 int charset = 0;
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
5657 char *text_html = NULL;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
5658 char *msg = NULL;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
5659 gsize msglen = 0;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5660
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5661 if (od->rights.maxsiglen == 0)
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5662 gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5663 _("You have probably requested to set your "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5664 "profile before the login procedure completed. "
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5665 "Your profile remains unset; try setting it "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5666 "again when you are fully connected."));
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5667
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5668 if (!text) {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5669 aim_locate_setprofile(od->sess, NULL, "", 0, NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5670 return;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5671 }
10097
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
5672
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5673 text_html = gaim_strdup_withhtml(text);
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
5674 charset = oscar_charset_check(text_html);
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
5675 if (charset == AIM_CHARSET_UNICODE) {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5676 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5677 aim_locate_setprofile(od->sess, "unicode-2-0", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5678 g_free(msg);
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
5679 } else if (charset == AIM_CHARSET_CUSTOM) {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5680 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5681 aim_locate_setprofile(od->sess, "iso-8859-1", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5682 g_free(msg);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5683 } else {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5684 msglen = strlen(text_html);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5685 aim_locate_setprofile(od->sess, "us-ascii", text_html, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5686 }
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5687
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5688 if (msglen > od->rights.maxsiglen) {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5689 gchar *errstr;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5690 errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5691 "has been exceeded. Gaim has truncated it for you.",
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5692 "The maximum profile length of %d bytes "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5693 "has been exceeded. Gaim has truncated it for you.",
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5694 od->rights.maxsiglen), od->rights.maxsiglen);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5695 gaim_notify_warning(gc, NULL, _("Profile too long."), errstr);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5696 g_free(errstr);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5697 }
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5698
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5699 g_free(text_html);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5700 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5701
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5702 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5703 oscar_set_status_aim(GaimAccount *account, GaimStatus *status)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5704 {
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5705 GaimConnection *gc = gaim_account_get_connection(account);
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5706 OscarData *od = NULL;
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
5707 GaimStatusType *status_type;
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5708 GaimStatusPrimitive primitive;
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5709 GaimPresence *presence;
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5710 const gchar *status_id;
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
5711 int charset = 0;
10196
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5712 const gchar *text_html = NULL;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
5713 char *msg = NULL;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
5714 gsize msglen = 0;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5715
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
5716 status_type = gaim_status_get_type(status);
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
5717 primitive = gaim_status_type_get_primitive(status_type);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5718 status_id = gaim_status_get_id(status);
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5719 presence = gaim_account_get_presence(account);
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5720
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5721 if (gc)
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5722 od = (OscarData *)gc->proto_data;
10401
3e4ecbdf8d0a [gaim-migrate @ 11638]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10400
diff changeset
5723
3e4ecbdf8d0a [gaim-migrate @ 11638]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10400
diff changeset
5724 if ((od == NULL) || (od->rights.maxawaymsglen == 0)) {
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5725 gaim_notify_warning(gc, NULL, _("Unable to set AIM away message."),
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5726 _("You have probably requested to set your "
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5727 "away message before the login procedure "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5728 "completed. You remain in a \"present\" "
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5729 "state; try setting it again when you are "
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5730 "fully connected."));
10401
3e4ecbdf8d0a [gaim-migrate @ 11638]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10400
diff changeset
5731 return;
3e4ecbdf8d0a [gaim-migrate @ 11638]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10400
diff changeset
5732 }
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
5733
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
5734 if (primitive == GAIM_STATUS_AVAILABLE) {
10197
7369bf2bf593 [gaim-migrate @ 11314]
Mark Doliner <mark@kingant.net>
parents: 10196
diff changeset
5735 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
7369bf2bf593 [gaim-migrate @ 11314]
Mark Doliner <mark@kingant.net>
parents: 10196
diff changeset
5736
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5737 aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0);
10198
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
5738
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
5739 text_html = gaim_status_get_attr_string(status, "message");
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
5740 if (text_html != NULL) {
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
5741 aim_srv_setavailmsg(od->sess, text_html);
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
5742 }
10196
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5743
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5744 } else if (primitive == GAIM_STATUS_AWAY) {
10197
7369bf2bf593 [gaim-migrate @ 11314]
Mark Doliner <mark@kingant.net>
parents: 10196
diff changeset
5745 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
7369bf2bf593 [gaim-migrate @ 11314]
Mark Doliner <mark@kingant.net>
parents: 10196
diff changeset
5746
10196
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5747 text_html = gaim_status_get_attr_string(status, "message");
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5748
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5749 if (text_html == NULL) {
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5750 text_html = _("Away");
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5751 }
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5752
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5753 charset = oscar_charset_check(text_html);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5754 if (charset == AIM_CHARSET_UNICODE) {
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5755 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5756 aim_locate_setprofile(od->sess, NULL, NULL, 0, "unicode-2-0", msg,
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5757 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5758 g_free(msg);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5759 } else if (charset == AIM_CHARSET_CUSTOM) {
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5760 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5761 aim_locate_setprofile(od->sess, NULL, NULL, 0, "iso-8859-1", msg,
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5762 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5763 g_free(msg);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5764 } else {
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5765 msglen = strlen(text_html);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5766 aim_locate_setprofile(od->sess, NULL, NULL, 0, "us-ascii", text_html,
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5767 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5768 }
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5769
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5770 if (msglen > od->rights.maxawaymsglen) {
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5771 gchar *errstr;
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5772
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5773 errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5774 "has been exceeded. Gaim has truncated it for you.",
10196
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5775 "The maximum away message length of %d bytes "
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5776 "has been exceeded. Gaim has truncated it for you.",
10196
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5777 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5778 gaim_notify_warning(gc, NULL, _("Away message too long."), errstr);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5779 g_free(errstr);
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5780 }
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5781
10197
7369bf2bf593 [gaim-migrate @ 11314]
Mark Doliner <mark@kingant.net>
parents: 10196
diff changeset
5782 } else if (primitive == GAIM_STATUS_HIDDEN) {
7369bf2bf593 [gaim-migrate @ 11314]
Mark Doliner <mark@kingant.net>
parents: 10196
diff changeset
5783 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
7369bf2bf593 [gaim-migrate @ 11314]
Mark Doliner <mark@kingant.net>
parents: 10196
diff changeset
5784
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
5785 } else {
10196
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5786 gaim_debug_info("oscar", "Don't know what to do for this status\n");
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5787
760e690a5f30 [gaim-migrate @ 11313]
Mark Doliner <mark@kingant.net>
parents: 10195
diff changeset
5788 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5789 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5790
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5791 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5792 oscar_set_status_icq(GaimAccount *account, GaimStatus *status)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5793 {
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5794 GaimConnection *gc = gaim_account_get_connection(account);
10646
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
5795 OscarData *od = NULL;
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5796 const gchar *status_id = gaim_status_get_id(status);
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5797
10646
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
5798 if (gc)
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
5799 od = (OscarData *)gc->proto_data;
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
5800 if (!od)
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
5801 return;
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
5802
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5803 if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_HIDDEN)
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5804 account->perm_deny = 4;
8265
b7ff849f48dd [gaim-migrate @ 8988]
Mark Doliner <mark@kingant.net>
parents: 8257
diff changeset
5805 else
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5806 account->perm_deny = 3;
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5807
8265
b7ff849f48dd [gaim-migrate @ 8988]
Mark Doliner <mark@kingant.net>
parents: 8257
diff changeset
5808 if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != account->perm_deny))
b7ff849f48dd [gaim-migrate @ 8988]
Mark Doliner <mark@kingant.net>
parents: 8257
diff changeset
5809 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
5810
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5811 if (!strcmp(status_id, OSCAR_STATUS_ID_ONLINE))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5812 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5813
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5814 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5815 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5816
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5817 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5818 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5819
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5820 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5821 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5822
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5823 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5824 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5825
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5826 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5827 aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5828
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5829 else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5830 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5831
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5832 else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM))
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5833 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5834 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5835
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5836 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5837 oscar_set_status(GaimAccount *account, GaimStatus *status)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5838 {
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5839 gboolean connected = gaim_account_is_connected(account);
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5840 GaimStatusType *type = gaim_status_get_type(status);
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5841 int primitive = gaim_status_type_get_primitive(type);
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5842
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5843 gaim_debug_info("oscar", "Set status to %s\n", gaim_status_get_name(status));
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5844
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
5845 if (!gaim_status_is_active(status))
10485
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
5846 return;
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
5847
10753
b40a67d45dbb [gaim-migrate @ 12356]
Mark Doliner <mark@kingant.net>
parents: 10751
diff changeset
5848 if (primitive != GAIM_STATUS_OFFLINE && !connected) {
10738
55af3fa46329 [gaim-migrate @ 12340]
Mark Doliner <mark@kingant.net>
parents: 10732
diff changeset
5849 gaim_account_connect(account);
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5850 } else if (primitive == GAIM_STATUS_OFFLINE && connected) {
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5851 gaim_account_disconnect(account);
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5852 } else {
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5853 if (!connected)
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5854 return;
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5855
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5856 if (aim_sn_is_icq(gaim_account_get_username(account)))
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5857 oscar_set_status_icq(account, status);
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5858 else
10560
33746d45bd0d [gaim-migrate @ 11938]
Mark Doliner <mark@kingant.net>
parents: 10540
diff changeset
5859 /* QQQ - Should probably also set this for ICQ */
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5860 oscar_set_status_aim(account, status);
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
5861 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5862 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5863
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5864 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
5865 oscar_warn(GaimConnection *gc, const char *name, gboolean anonymous) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5866 OscarData *od = (OscarData *)gc->proto_data;
9753
60705fd4f411 [gaim-migrate @ 10620]
Mark Doliner <mark@kingant.net>
parents: 9730
diff changeset
5867 aim_im_warn(od->sess, od->conn, name, anonymous ? AIM_WARN_ANON : 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5868 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5869
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5870 static void
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
5871 oscar_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5872 OscarData *od = (OscarData *)gc->proto_data;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5873
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5874 if (!aim_snvalid(buddy->name)) {
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
5875 gchar *buf;
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
5876 buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name);
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
5877 if (!gaim_conv_present_error(buddy->name, gaim_connection_get_account(gc), buf))
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
5878 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
5879 g_free(buf);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
5880
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
5881 /* Remove from local list */
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5882 gaim_blist_remove_buddy(buddy);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
5883
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
5884 return;
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
5885 }
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
5886
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5887 #ifdef NOSSI
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5888 aim_buddylist_addbuddy(od->sess, od->conn, buddy->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5889 #else
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5890 if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5891 if (buddy && group) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5892 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5893 "ssi: adding buddy %s to group %s\n", buddy->name, group->name);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
5894 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 0);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5895 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5896 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5897 #endif
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
5898
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
5899 /* XXX - Should this be done from AIM accounts, as well? */
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
5900 if (od->icq)
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5901 aim_icq_getalias(od->sess, buddy->name);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5902 }
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5903
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5904 static void oscar_add_buddies(GaimConnection *gc, GList *buddies, GList *groups) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5905 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5906 #ifdef NOSSI
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5907 char buf[MSG_LEN];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5908 int n=0;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5909
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5910 while (buddies) {
9381
f1fd56e83567 [gaim-migrate @ 10189]
Mark Doliner <mark@kingant.net>
parents: 9318
diff changeset
5911 GaimBuddy *buddy = buddies->data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5912 if (n > MSG_LEN - 18) {
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
5913 aim_buddylist_set(od->sess, od->conn, buf);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5914 n = 0;
3092
beb5d0e592d9 [gaim-migrate @ 3106]
Sean Egan <seanegan@gmail.com>
parents: 3089
diff changeset
5915 }
9381
f1fd56e83567 [gaim-migrate @ 10189]
Mark Doliner <mark@kingant.net>
parents: 9318
diff changeset
5916 n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", buddy->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5917 buddies = buddies->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5918 }
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
5919 aim_buddylist_set(od->sess, od->conn, buf);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5920 #else
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5921
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5922 if (od->sess->ssi.received_data) {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5923 GList *curb = buddies;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5924 GList *curg = groups;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5925 while ((curb != NULL) && (curg != NULL)) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5926 GaimBuddy *buddy = curb->data;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5927 GaimGroup *group = curg->data;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5928 oscar_add_buddy(gc, buddy, group);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5929 curb = curb->next;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5930 curg = curg->next;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5931 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5932 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5933 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5934 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5935
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5936 static void oscar_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5937 OscarData *od = (OscarData *)gc->proto_data;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5938
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5939 #ifdef NOSSI
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5940 aim_buddylist_removebuddy(od->sess, od->conn, buddy->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5941 #else
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5942 if (od->sess->ssi.received_data) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5943 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5944 "ssi: deleting buddy %s from group %s\n", buddy->name, group->name);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5945 aim_ssi_delbuddy(od->sess, buddy->name, group->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5946 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5947 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5948 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5949
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5950 static void oscar_remove_buddies(GaimConnection *gc, GList *buddies, GList *groups) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5951 OscarData *od = (OscarData *)gc->proto_data;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5952
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5953 #ifdef NOSSI
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5954 for (cur = buddies; cur != NULL; cur = cur->next) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5955 GaimBuddy *buddy = cur->data;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5956 aim_buddylist_removebuddy(od->sess, od->conn, buddy->name);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5957 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5958 #else
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5959 if (od->sess->ssi.received_data) {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5960 GList *curb = buddies;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5961 GList *curg = groups;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5962 while ((curb != NULL) && (curg != NULL)) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5963 GaimBuddy *buddy = curb->data;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5964 GaimGroup *group = curg->data;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5965 oscar_remove_buddy(gc, buddy, group);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5966 curb = curb->next;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5967 curg = curg->next;
3092
beb5d0e592d9 [gaim-migrate @ 3106]
Sean Egan <seanegan@gmail.com>
parents: 3089
diff changeset
5968 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5969 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5970 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5971 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5972
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5973 #ifndef NOSSI
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5974 static void oscar_move_buddy(GaimConnection *gc, const char *name, const char *old_group, const char *new_group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5975 OscarData *od = (OscarData *)gc->proto_data;
4303
22ebfa41525a [gaim-migrate @ 4557]
Mark Doliner <mark@kingant.net>
parents: 4299
diff changeset
5976 if (od->sess->ssi.received_data && strcmp(old_group, new_group)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5977 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5978 "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
5979 aim_ssi_movebuddy(od->sess, old_group, new_group, name);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5980 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5981 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5982
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5983 static void oscar_alias_buddy(GaimConnection *gc, const char *name, const char *alias) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5984 OscarData *od = (OscarData *)gc->proto_data;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5985 if (od->sess->ssi.received_data) {
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5986 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5987 if (gname) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5988 gaim_debug_info("oscar",
9586
70fe6ef5d3a3 [gaim-migrate @ 10429]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
5989 "ssi: changing the alias for buddy %s to %s\n", name, alias ? alias : "(none)");
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
5990 aim_ssi_aliasbuddy(od->sess, gname, name, alias);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5991 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5992 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5993 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5994
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5995 static void oscar_rename_group(GaimConnection *gc, const char *old_name, GaimGroup *group, GList *moved_buddies) {
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5996 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5997
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5998 if (od->sess->ssi.received_data) {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
5999 if (aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6000 GList *cur, *groups = NULL;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6001
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6002 /* Make a list of what the groups each buddy is in */
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6003 for (cur = moved_buddies; cur != NULL; cur = cur->next) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6004 GaimBlistNode *node = cur->data;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6005 groups = g_list_append(groups, node->parent);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6006 }
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6007
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6008 oscar_remove_buddies(gc, moved_buddies, groups);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6009 oscar_add_buddies(gc, moved_buddies, groups);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6010 g_list_free(groups);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6011 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6012 "ssi: moved all buddies from group %s to %s\n", old_name, group->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6013 } else {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6014 aim_ssi_rename_group(od->sess, old_name, group->name);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6015 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6016 "ssi: renamed group %s to %s\n", old_name, group->name);
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6017 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6018 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6019 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6020
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6021 static gboolean gaim_ssi_rerequestdata(gpointer data) {
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6022 aim_session_t *sess = data;
6350
34c07f5f34a0 [gaim-migrate @ 6849]
Mark Doliner <mark@kingant.net>
parents: 6318
diff changeset
6023 aim_ssi_reqdata(sess);
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6024 return FALSE;
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6025 }
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6026
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6027 static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6028 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6029 OscarData *od = gc->proto_data;
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6030 va_list ap;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6031 fu16_t reason;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6032
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6033 va_start(ap, fr);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6034 reason = (fu16_t)va_arg(ap, unsigned int);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6035 va_end(ap);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6036
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6037 gaim_debug_error("oscar", "ssi: SNAC error %hu\n", reason);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6038
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6039 if (reason == 0x0005) {
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6040 gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
6041 _("Gaim was temporarily unable to retrieve your buddy list from the AIM servers. Your buddy list is not lost, and will probably become available in a few hours."));
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
6042 od->getblisttimer = gaim_timeout_add(300000, gaim_ssi_rerequestdata, od->sess);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6043 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6044
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6045 /* Activate SSI */
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6046 /* Sending the enable causes other people to be able to see you, and you to see them */
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6047 /* Make sure your privacy setting/invisibility is set how you want it before this! */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6048 gaim_debug_info("oscar", "ssi: activating server-stored buddy list\n");
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6049 aim_ssi_enable(od->sess);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6050
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6051 return 1;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6052 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6053
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6054 static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6055 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6056 OscarData *od = (OscarData *)gc->proto_data;
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6057 int i;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6058 va_list ap;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6059 int numtypes;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6060 fu16_t *maxitems;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6061
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6062 va_start(ap, fr);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6063 numtypes = va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6064 maxitems = va_arg(ap, fu16_t *);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6065 va_end(ap);
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6066
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6067 gaim_debug_misc("oscar", "ssi rights:");
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
6068
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6069 for (i=0; i<numtypes; i++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6070 gaim_debug_misc(NULL, " max type 0x%04x=%hd,",
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
6071 i, maxitems[i]);
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
6072
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6073 gaim_debug_misc(NULL, "\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6074
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6075 if (numtypes >= 0)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6076 od->rights.maxbuddies = maxitems[0];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6077 if (numtypes >= 1)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6078 od->rights.maxgroups = maxitems[1];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6079 if (numtypes >= 2)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6080 od->rights.maxpermits = maxitems[2];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6081 if (numtypes >= 3)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6082 od->rights.maxdenies = maxitems[3];
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6083
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6084 return 1;
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6085 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6086
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6087 static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6088 GaimConnection *gc = sess->aux_data;
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6089 GaimAccount *account = gaim_connection_get_account(gc);
9988
d770673338f4 [gaim-migrate @ 10901]
Luke Schierer <lschiere@pidgin.im>
parents: 9982
diff changeset
6090 GaimStatus *status;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6091 OscarData *od = (OscarData *)gc->proto_data;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6092 GaimGroup *g;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6093 GaimBuddy *b;
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6094 struct aim_ssi_item *curitem;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6095 int tmp;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6096 va_list ap;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6097 fu16_t fmtver, numitems;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6098 struct aim_ssi_item *items;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6099 fu32_t timestamp;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6100
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6101 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6102 fmtver = (fu16_t)va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6103 numitems = (fu16_t)va_arg(ap, int);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6104 items = va_arg(ap, struct aim_ssi_item *);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6105 timestamp = va_arg(ap, fu32_t);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6106 va_end(ap);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6107
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6108 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6109 "ssi: syncing local list and server list\n");
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6110
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6111 if ((timestamp == 0) || (numitems == 0)) {
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
6112 gaim_debug_info("oscar", "Got AIM SSI with a 0 timestamp or 0 numitems--not syncing. This probably means your buddy list is empty.", NULL);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6113 return 1;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6114 }
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6115
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6116 /* Clean the buddy list */
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6117 aim_ssi_cleanlist(sess);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6118
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6119 { /* If not in server list then prune from local list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6120 GaimBlistNode *gnode, *cnode, *bnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6121 GaimBuddyList *blist;
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6122 GSList *cur, *next;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6123
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6124 /* Buddies */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6125 cur = NULL;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6126 if ((blist = gaim_get_blist()) != NULL) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6127 for (gnode = blist->root; gnode; gnode = gnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6128 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6129 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6130 g = (GaimGroup *)gnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6131 for (cnode = gnode->child; cnode; cnode = cnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6132 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6133 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6134 for (bnode = cnode->child; bnode; bnode = bnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6135 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6136 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6137 b = (GaimBuddy *)bnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6138 if (b->account == gc->account) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6139 if (aim_ssi_itemlist_exists(sess->ssi.local, b->name)) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6140 /* If the buddy is an ICQ user then load his nickname */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6141 const char *servernick = gaim_blist_node_get_string((GaimBlistNode*)b, "servernick");
8214
3418a6d51464 [gaim-migrate @ 8937]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
6142 char *alias;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6143 if (servernick)
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6144 serv_got_alias(gc, b->name, servernick);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6145
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6146 /* Store local alias on server */
8214
3418a6d51464 [gaim-migrate @ 8937]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
6147 alias = aim_ssi_getalias(sess->ssi.local, g->name, b->name);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6148 if (!alias && b->alias && strlen(b->alias))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6149 aim_ssi_aliasbuddy(sess, g->name, b->name, b->alias);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6150 free(alias);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6151 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6152 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6153 "ssi: removing buddy %s from local list\n", b->name);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6154 /* We can't actually remove now because it will screw up our looping */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6155 cur = g_slist_prepend(cur, b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6156 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6157 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6158 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6159 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6160 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6161 }
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6162
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6163 while (cur != NULL) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6164 b = cur->data;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6165 cur = g_slist_remove(cur, b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6166 gaim_blist_remove_buddy(b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6167 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6168
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6169 /* Permit list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6170 if (gc->account->permit) {
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6171 next = gc->account->permit;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6172 while (next != NULL) {
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6173 cur = next;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6174 next = next->next;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6175 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6176 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6177 "ssi: removing permit %s from local list\n", (const char *)cur->data);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6178 gaim_privacy_permit_remove(account, cur->data, TRUE);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6179 }
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6180 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6181 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6182
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6183 /* Deny list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6184 if (gc->account->deny) {
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6185 next = gc->account->deny;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6186 while (next != NULL) {
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6187 cur = next;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6188 next = next->next;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6189 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6190 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6191 "ssi: removing deny %s from local list\n", (const char *)cur->data);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6192 gaim_privacy_deny_remove(account, cur->data, TRUE);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6193 }
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6194 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6195 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6196 /* Presence settings (idle time visibility) */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6197 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6198 if (!(tmp & 0x400))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6199 aim_ssi_setpresence(sess, tmp | 0x400);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6200 } /* end pruning buddies from local list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6201
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6202 /* Add from server list to local list */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6203 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
7328
3bcd867c22f3 [gaim-migrate @ 7914]
Mark Doliner <mark@kingant.net>
parents: 7313
diff changeset
6204 if ((curitem->name == NULL) || (g_utf8_validate(curitem->name, -1, NULL)))
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6205 switch (curitem->type) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6206 case 0x0000: { /* Buddy */
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
6207 if (curitem->name) {
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
6208 char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name);
7166
e6b01bd8d6cd [gaim-migrate @ 7733]
Mark Doliner <mark@kingant.net>
parents: 7164
diff changeset
6209 char *gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
6210 char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
7166
e6b01bd8d6cd [gaim-migrate @ 7733]
Mark Doliner <mark@kingant.net>
parents: 7164
diff changeset
6211 char *alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6212 b = gaim_find_buddy(gc->account, curitem->name);
4458
a46c57f2d58b [gaim-migrate @ 4733]
Luke Schierer <lschiere@pidgin.im>
parents: 4452
diff changeset
6213 /* Should gname be freed here? -- elb */
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
6214 /* Not with the current code, but that might be cleaner -- med */
4458
a46c57f2d58b [gaim-migrate @ 4733]
Luke Schierer <lschiere@pidgin.im>
parents: 4452
diff changeset
6215 free(alias);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6216 if (b) {
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
6217 /* Get server stored alias */
4705
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
6218 if (alias_utf8) {
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6219 g_free(b->alias);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6220 b->alias = g_strdup(alias_utf8);
4705
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
6221 }
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
6222 } else {
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6223 b = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
6224
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
6225 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6226 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
6227 gaim_blist_add_group(g, NULL);
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
6228 }
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
6229
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6230 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6231 "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans"));
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6232 gaim_blist_add_buddy(b, NULL, g, NULL);
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
6233 }
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
6234 if (!aim_sncmp(curitem->name, account->username)) {
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
6235 char *comment = aim_ssi_getcomment(sess->ssi.local, gname, curitem->name);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
6236 gaim_check_comment(od, comment);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
6237 free(comment);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
6238 }
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
6239 g_free(gname_utf8);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
6240 g_free(alias_utf8);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6241 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6242 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6243
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6244 case 0x0001: { /* Group */
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
6245 /* Shouldn't add empty groups */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6246 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6247
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6248 case 0x0002: { /* Permit buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6249 if (curitem->name) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6250 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6251 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6252 for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6253 if (!list) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6254 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6255 "ssi: adding permit buddy %s to local list\n", curitem->name);
6400
588e88bcdac5 [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
6256 gaim_privacy_permit_add(account, curitem->name, TRUE);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6257 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6258 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6259 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6260
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6261 case 0x0003: { /* Deny buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6262 if (curitem->name) {
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6263 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6264 for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6265 if (!list) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6266 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6267 "ssi: adding deny buddy %s to local list\n", curitem->name);
6400
588e88bcdac5 [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
6268 gaim_privacy_deny_add(account, curitem->name, TRUE);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6269 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6270 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6271 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6272
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6273 case 0x0004: { /* Permit/deny setting */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6274 if (curitem->data) {
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6275 fu8_t permdeny;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6276 if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != account->perm_deny)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6277 gaim_debug_info("oscar",
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6278 "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny);
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6279 account->perm_deny = permdeny;
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6280 if (od->icq && account->perm_deny == 0x03) {
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6281 gaim_presence_switch_status(account->presence, OSCAR_STATUS_ID_INVISIBLE);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
6282 }
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6283 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6284 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6285 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6286
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6287 case 0x0005: { /* Presence setting */
3109
51f49dcbd14b [gaim-migrate @ 3123]
Sean Egan <seanegan@gmail.com>
parents: 3106
diff changeset
6288 /* We don't want to change Gaim's setting because it applies to all accounts */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6289 } break;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6290 } /* End of switch on curitem->type */
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6291 } /* End of for loop */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6292
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6293 /*
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6294 * XXX - STATUS - Set our ICQ status. We probably don't want to do
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6295 * this. We probably want the SSI status setting to override the local
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6296 * setting.
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6297 */
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6298 status = gaim_presence_get_active_status(account->presence);
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6299 if (gaim_status_is_available(status))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6300 aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL);
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6301
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
6302 /* Activate SSI */
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
6303 /* Sending the enable causes other people to be able to see you, and you to see them */
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
6304 /* Make sure your privacy setting/invisibility is set how you want it before this! */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6305 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6306 "ssi: activating server-stored buddy list\n");
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6307 aim_ssi_enable(sess);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
6308
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6309 return 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6310 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6311
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6312 static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6313 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6314 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6315 struct aim_ssi_tmp *retval;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6316
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6317 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6318 retval = va_arg(ap, struct aim_ssi_tmp *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6319 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6320
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6321 while (retval) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6322 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6323 "ssi: status is 0x%04hx for a 0x%04hx action with name %s\n", retval->ack, retval->action, retval->item ? (retval->item->name ? retval->item->name : "no name") : "no item");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6324
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6325 if (retval->ack != 0xffff)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6326 switch (retval->ack) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6327 case 0x0000: { /* added successfully */
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6328 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6329
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
6330 case 0x000c: { /* you are over the limit, the cheat is to the limit, come on fhqwhgads */
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
6331 gchar *buf;
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
6332 buf = g_strdup_printf(_("Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."), (retval->name ? retval->name : _("(no name)")));
9758
4f2b50a06224 [gaim-migrate @ 10625]
Mark Doliner <mark@kingant.net>
parents: 9754
diff changeset
6333 if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf))
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
6334 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
6335 g_free(buf);
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
6336 }
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
6337
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
6338 case 0x000e: { /* buddy requires authorization */
4828
71232144e2ff [gaim-migrate @ 5153]
Mark Doliner <mark@kingant.net>
parents: 4827
diff changeset
6339 if ((retval->action == AIM_CB_SSI_ADD) && (retval->name))
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6340 gaim_auth_sendrequest(gc, retval->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6341 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6342
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6343 default: { /* La la la */
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
6344 gchar *buf;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6345 gaim_debug_error("oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
6346 buf = g_strdup_printf(_("Could not add the buddy %s for an unknown reason. The most common reason for this is that you have the maximum number of allowed buddies in your buddy list."), (retval->name ? retval->name : _("(no name)")));
9758
4f2b50a06224 [gaim-migrate @ 10625]
Mark Doliner <mark@kingant.net>
parents: 9754
diff changeset
6347 if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf))
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
6348 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
6349 g_free(buf);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6350 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6351 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6352
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6353 retval = retval->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6354 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6355
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6356 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6357 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6358
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6359 static int gaim_ssi_parseadd(aim_session_t *sess, aim_frame_t *fr, ...) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6360 GaimConnection *gc = sess->aux_data;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6361 char *gname, *gname_utf8, *alias, *alias_utf8;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6362 GaimBuddy *b;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6363 GaimGroup *g;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6364 va_list ap;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6365 fu16_t type;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6366 const char *name;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6367
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6368 va_start(ap, fr);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6369 type = (fu16_t)va_arg(ap, int);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6370 name = va_arg(ap, char *);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6371 va_end(ap);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6372
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6373 if ((type != 0x0000) || (name == NULL))
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6374 return 1;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6375
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6376 gname = aim_ssi_itemlist_findparentname(sess->ssi.local, name);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6377 gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6378 alias = aim_ssi_getalias(sess->ssi.local, gname, name);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6379 alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6380 b = gaim_find_buddy(gc->account, name);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6381 free(alias);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6382
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6383 if (b) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6384 /* Get server stored alias */
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6385 if (alias_utf8) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6386 g_free(b->alias);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6387 b->alias = g_strdup(alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6388 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6389 } else {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6390 b = gaim_buddy_new(gc->account, name, alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6391
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6392 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6393 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6394 gaim_blist_add_group(g, NULL);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6395 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6396
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6397 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6398 "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans"));
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6399 gaim_blist_add_buddy(b, NULL, g, NULL);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6400 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6401 g_free(gname_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6402 g_free(alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6403
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6404 return 1;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6405 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
6406
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6407 static int gaim_ssi_authgiven(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6408 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6409 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6410 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6411 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6412 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6413 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6414
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6415 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6416 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6417 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6418 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6419
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6420 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6421 "ssi: %s has given you permission to add him to your buddy list\n", sn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6422
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6423 buddy = gaim_find_buddy(gc->account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6424 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6425 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6426 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6427 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6428
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
6429 dialog_msg = g_strdup_printf(_("The user %s has given you permission to add you to their buddy list. Do you want to add them?"), nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6430 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6431 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6432 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6433 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6434
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6435 gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
6436 GAIM_DEFAULT_ACTION_NONE, data,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
6437 G_CALLBACK(gaim_icq_buddyadd),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
6438 G_CALLBACK(oscar_free_name_data));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6439
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6440 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6441 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6442
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6443 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6444 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6445
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6446 static int gaim_ssi_authrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6447 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6448 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6449 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6450 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6451 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6452 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6453
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6454 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6455 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6456 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6457 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6458
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6459 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6460 "ssi: received authorization request from %s\n", sn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6461
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6462 buddy = gaim_find_buddy(gc->account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6463 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6464 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6465 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6466 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6467
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
6468 dialog_msg = g_strdup_printf(_("The user %s wants to add you to their buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6469 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6470 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6471 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6472 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6473
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6474 gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg,
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
6475 GAIM_DEFAULT_ACTION_NONE, data, 2,
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6476 _("Authorize"), G_CALLBACK(gaim_auth_grant),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6477 _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6478
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6479 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6480 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6481
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6482 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6483 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6484
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6485 static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6486 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6487 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6488 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6489 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6490 fu8_t reply;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6491 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6492
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6493 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6494 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6495 reply = (fu8_t)va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6496 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6497 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6498
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6499 gaim_debug_info("oscar",
10812
d087e928ffd1 [gaim-migrate @ 12465]
Luke Schierer <lschiere@pidgin.im>
parents: 10785
diff changeset
6500 "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6501
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6502 buddy = gaim_find_buddy(gc->account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6503 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6504 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6505 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6506 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6507
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6508 if (reply) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6509 /* Granted */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
6510 dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your buddy list."), nombre);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6511 gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6512 } else {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6513 /* Denied */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
6514 dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6515 gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6516 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6517 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
6518 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6519
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6520 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6521 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6522
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6523 static int gaim_ssi_gotadded(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6524 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6525 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6526 char *sn;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6527 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6528
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6529 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6530 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6531 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6532
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6533 buddy = gaim_find_buddy(gc->account, sn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6534 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6535 "ssi: %s added you to their buddy list\n", sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6536 gaim_account_notify_added(gc->account, NULL, sn, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6537
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6538 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6539 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6540 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6541
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6542 static GList *oscar_chat_info(GaimConnection *gc) {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6543 GList *m = NULL;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6544 struct proto_chat_entry *pce;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6545
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6546 pce = g_new0(struct proto_chat_entry, 1);
9770
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9758
diff changeset
6547 pce->label = _("_Room:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6548 pce->identifier = "room";
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10472
diff changeset
6549 pce->required = TRUE;
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6550 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6551
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6552 pce = g_new0(struct proto_chat_entry, 1);
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7805
diff changeset
6553 pce->label = _("_Exchange:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6554 pce->identifier = "exchange";
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10472
diff changeset
6555 pce->required = TRUE;
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6556 pce->is_int = TRUE;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6557 pce->min = 4;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6558 pce->max = 20;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6559 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6560
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6561 return m;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6562 }
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6563
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6564 GHashTable *oscar_chat_info_defaults(GaimConnection *gc, const char *chat_name)
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6565 {
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6566 GHashTable *defaults;
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6567
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6568 defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6569
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6570 if (chat_name != NULL)
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6571 g_hash_table_insert(defaults, "room", g_strdup(chat_name));
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6572
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6573 return defaults;
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6574 }
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6575
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
6576 static char *oscar_get_chat_name(GHashTable *data) {
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
6577 return g_strdup(g_hash_table_lookup(data, "room"));
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
6578 }
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
6579
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6580 static void oscar_join_chat(GaimConnection *gc, GHashTable *data) {
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6581 OscarData *od = (OscarData *)gc->proto_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6582 aim_conn_t *cur;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6583 char *name, *exchange;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6584
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6585 name = g_hash_table_lookup(data, "room");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6586 exchange = g_hash_table_lookup(data, "exchange");
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
6587
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6588 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6589 "Attempting to join chat room %s.\n", name);
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6590
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6591 if ((name == NULL) || (*name == '\0')) {
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6592 gaim_notify_error(gc, NULL, _("Invalid chat name specified."), NULL);
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6593 return;
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6594 }
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6595
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6596 if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6597 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6598 "chatnav exists, creating room\n");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6599 aim_chatnav_createroom(od->sess, cur, name, atoi(exchange));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6600 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6601 /* this gets tricky */
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
6602 struct create_room *cr = g_new0(struct create_room, 1);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6603 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6604 "chatnav does not exist, opening chatnav\n");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6605 cr->exchange = atoi(exchange);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
6606 cr->name = g_strdup(name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6607 od->create_rooms = g_slist_append(od->create_rooms, cr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6608 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6609 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6610 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6611
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6612 static void oscar_chat_invite(GaimConnection *gc, int id, const char *message, const char *name) {
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6613 OscarData *od = (OscarData *)gc->proto_data;
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
6614 struct chat_connection *ccon = find_oscar_chat(gc, id);
10404
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
6615
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
6616 if (ccon == NULL)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6617 return;
10404
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
6618
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
6619 aim_im_sendch2_chatinvite(od->sess, name, message ? message : "",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6620 ccon->exchange, ccon->name, 0x0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6621 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6622
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6623 static void
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6624 oscar_chat_leave(GaimConnection *gc, int id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6625 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6626 GaimConversation *conv;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6627 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6628
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6629 conv = gaim_find_chat(gc, id);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6630
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6631 g_return_if_fail(conv != NULL);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6632
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6633 gaim_debug_info("oscar", "Leaving chat room %s\n", conv->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6634
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6635 cc = find_oscar_chat(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
6636 oscar_chat_kill(gc, cc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6637 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6638
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6639 static int oscar_send_chat(GaimConnection *gc, int id, const char *message) {
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6640 OscarData *od = (OscarData *)gc->proto_data;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6641 GaimConversation *conv = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6642 struct chat_connection *c = NULL;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
6643 char *buf, *buf2;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6644 fu16_t charset, charsubset;
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
6645 char *charsetstr = NULL;
10111
8490f2e292a6 [gaim-migrate @ 11144]
Nathan Walp <nwalp@pidgin.im>
parents: 10098
diff changeset
6646 int len;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6647
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6648 if (!(conv = gaim_find_chat(gc, id)))
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
6649 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6650
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6651 if (!(c = find_oscar_chat_by_conv(gc, conv)))
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
6652 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6653
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6654 buf = gaim_strdup_withhtml(message);
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6655 len = strlen(buf);
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6656
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6657 if (strstr(buf, "<IMG "))
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6658 gaim_conversation_write(conv, "",
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6659 _("Your IM Image was not sent. "
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6660 "You cannot send IM Images in AIM chats."),
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6661 GAIM_MESSAGE_ERROR, time(NULL));
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6662
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6663 gaim_plugin_oscar_convert_to_best_encoding(gc, NULL, buf, &buf2, &len, &charset, &charsubset);
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
6664 if ((len > c->maxlen) || (len > c->maxvis)) {
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
6665 g_free(buf2);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
6666 return -E2BIG;
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
6667 }
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
6668
9831
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
6669 if (charset == AIM_CHARSET_ASCII)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
6670 charsetstr = "us-ascii";
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
6671 else if (charset == AIM_CHARSET_UNICODE)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
6672 charsetstr = "unicode-2-0";
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
6673 else if (charset == AIM_CHARSET_CUSTOM)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
6674 charsetstr = "iso-8859-1";
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
6675 aim_chat_send_im(od->sess, c->conn, 0, buf2, len, charsetstr, "en");
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6676 g_free(buf2);
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
6677
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
6678 return 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6679 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6680
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6681 static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6682 {
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
6683 if (!b || (b && b->name && b->name[0] == '+')) {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
6684 if (a != NULL && aim_sn_is_icq(gaim_account_get_username(a)))
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6685 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6686 else
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6687 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6688 }
5646
48c63ee49961 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
6689
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
6690 if (b != NULL && aim_sn_is_icq(b->name))
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6691 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6692 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6693 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6694
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
6695 static void oscar_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne)
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6696 {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6697 GaimConnection *gc = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6698 OscarData *od = NULL;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6699 GaimAccount *account = NULL;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6700 GaimPresence *presence;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6701 GaimStatus *status;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6702 const char *status_id;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6703 char *emblems[4] = {NULL,NULL,NULL,NULL};
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6704 int i = 0;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6705 aim_userinfo_t *userinfo = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6706
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6707 if (b != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6708 account = b->account;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6709 if (account != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6710 gc = account->gc;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6711 if (gc != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6712 od = gc->proto_data;
7945
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
6713 if (od != NULL)
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
6714 userinfo = aim_locate_finduserinfo(od->sess, b->name);
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6715
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6716 presence = gaim_buddy_get_presence(b);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6717 status = gaim_presence_get_active_status(presence);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6718 status_id = gaim_status_get_id(status);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6719
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6720 if (gaim_presence_is_online(presence) == FALSE) {
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6721 char *gname;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6722 if ((b->name) && (od) && (od->sess->ssi.received_data) &&
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6723 (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) &&
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6724 (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6725 emblems[i++] = "notauthorized";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6726 } else {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6727 emblems[i++] = "offline";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6728 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6729 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
6730
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6731 if (b->name && aim_sn_is_icq(b->name)) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6732 if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6733 emblems[i++] = "invisible";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6734 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
6735 emblems[i++] = "freeforchat";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6736 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
6737 emblems[i++] = "dnd";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6738 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
6739 emblems[i++] = "na";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6740 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
6741 emblems[i++] = "occupied";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6742 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
6743 emblems[i++] = "away";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6744 } else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6745 emblems[i++] = "away";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6746 }
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6747
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6748 if (userinfo != NULL ) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6749 /* if (userinfo->flags & AIM_FLAG_UNCONFIRMED)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6750 emblems[i++] = "unconfirmed"; */
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6751 if (userinfo->flags & AIM_FLAG_ADMINISTRATOR)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6752 emblems[i++] = "admin";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6753 if (userinfo->flags & AIM_FLAG_AOL)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6754 emblems[i++] = "aol";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6755 if (userinfo->flags & AIM_FLAG_WIRELESS)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6756 emblems[i++] = "wireless";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6757 if (userinfo->flags & AIM_FLAG_ACTIVEBUDDY)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6758 emblems[i++] = "activebuddy";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6759
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6760 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_HIPTOP))
7945
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
6761 emblems[i++] = "hiptop";
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
6762
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6763 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_SECUREIM))
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6764 emblems[i++] = "secure";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6765 }
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6766
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6767 *se = emblems[0];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6768 *sw = emblems[1];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6769 *nw = emblems[2];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6770 *ne = emblems[3];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6771 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6772
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6773 static char *oscar_tooltip_text(GaimBuddy *b) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6774 GaimConnection *gc = b->account->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6775 OscarData *od = gc->proto_data;
7045
237ad253dd34 [gaim-migrate @ 7608]
Mark Doliner <mark@kingant.net>
parents: 7038
diff changeset
6776 aim_userinfo_t *userinfo = aim_locate_finduserinfo(od->sess, b->name);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6777 GString *str = g_string_new("");
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6778
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6779 if (GAIM_BUDDY_IS_ONLINE(b)) {
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6780 oscar_string_append_info(gc, str, "\n", b, userinfo);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6781
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6782 if ((userinfo != NULL) && (userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
6783 gchar *charset = oscar_encoding_extract(userinfo->away_encoding);
8392
6995abd533f5 [gaim-migrate @ 9121]
Mark Doliner <mark@kingant.net>
parents: 8363
diff changeset
6784 gchar *away_utf8 = oscar_encoding_to_utf8(charset, userinfo->away, userinfo->away_len);
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
6785 g_free(charset);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6786 if (away_utf8 != NULL) {
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
6787 gchar *tmp1, *tmp2;
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
6788 tmp2 = gaim_markup_strip_html(away_utf8);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
6789 g_free(away_utf8);
10732
c4cb90065e1d [gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents: 10715
diff changeset
6790 tmp1 = g_markup_escape_text(tmp2, -1);
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
6791 g_free(tmp2);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
6792 tmp2 = gaim_str_sub_away_formatters(tmp1, gaim_account_get_username(gaim_connection_get_account(gc)));
8461
16485e87b7bb [gaim-migrate @ 9191]
Mark Doliner <mark@kingant.net>
parents: 8446
diff changeset
6793 g_free(tmp1);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6794 g_string_append_printf(str, "\n<b>%s:</b> %s", _("Away Message"), tmp2);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
6795 g_free(tmp2);
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
6796 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6797 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6798 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6799
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6800 return g_string_free(str, FALSE);
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6801 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6802
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6803 static char *oscar_status_text(GaimBuddy *b)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6804 {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6805 GaimConnection *gc;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6806 OscarData *od;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6807 GaimStatus *status;
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6808 gchar *ret = NULL;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6809
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6810 gc = gaim_account_get_connection(gaim_buddy_get_account(b));
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6811 od = gc->proto_data;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6812 status = gaim_presence_get_active_status(gaim_buddy_get_presence(b));
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6813
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6814 if (gaim_status_is_available(status) == FALSE || (((b->uc & 0xffff0000) >> 16) & AIM_ICQ_STATE_CHAT)) {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
6815 if (aim_sn_is_icq(b->name))
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6816 ret = oscar_icqstatus((b->uc & 0xffff0000) >> 16);
7038
1ab06a680ac2 [gaim-migrate @ 7601]
Mark Doliner <mark@kingant.net>
parents: 7037
diff changeset
6817 else
1ab06a680ac2 [gaim-migrate @ 7601]
Mark Doliner <mark@kingant.net>
parents: 7037
diff changeset
6818 ret = g_strdup(_("Away"));
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
6819 } else if (GAIM_BUDDY_IS_ONLINE(b)) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
6820 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name));
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
6821 if ((bi != NULL) && (bi->availmsg != NULL))
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
6822 ret = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
6823 } else {
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6824 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name);
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6825 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6826 ret = g_strdup(_("Not Authorized"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6827 else
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6828 ret = g_strdup(_("Offline"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6829 }
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6830
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6831 return ret;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6832 }
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
6833
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6834
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
6835 static int oscar_icon_req(aim_session_t *sess, aim_frame_t *fr, ...) {
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6836 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6837 OscarData *od = gc->proto_data;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6838 va_list ap;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6839 fu16_t type;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6840 fu8_t flags = 0, length = 0;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6841 char *md5 = NULL;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6842
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6843
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6844 va_start(ap, fr);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6845 type = va_arg(ap, int);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6846
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6847 switch(type) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6848 case 0x0000:
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6849 case 0x0001: {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6850 flags = va_arg(ap, int);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6851 length = va_arg(ap, int);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6852 md5 = va_arg(ap, char *);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6853
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6854 if (flags == 0x41) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6855 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON) && !od->iconconnecting) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6856 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6857 od->set_icon = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6858 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6859 } else {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6860 struct stat st;
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6861 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6862 if (iconfile == NULL) {
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6863 aim_ssi_delicon(od->sess);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
6864 } else if (!g_stat(iconfile, &st)) {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6865 char *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
6866 FILE *file = g_fopen(iconfile, "rb");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6867 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
6868 /* XXX - Use g_file_get_contents()? */
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6869 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6870 fclose(file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6871 gaim_debug_info("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6872 "Uploading icon to icon server\n");
6879
594682101ba6 [gaim-migrate @ 7425]
Mark Doliner <mark@kingant.net>
parents: 6873
diff changeset
6873 aim_bart_upload(od->sess, buf, st.st_size);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6874 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6875 gaim_debug_error("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6876 "Can't open buddy icon file!\n");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6877 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6878 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6879 gaim_debug_error("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
6880 "Can't stat buddy icon file!\n");
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6881 }
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6882 }
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6883 } else if (flags == 0x81) {
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6884 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6885 if (iconfile == NULL)
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6886 aim_ssi_delicon(od->sess);
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6887 else
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6888 aim_ssi_seticon(od->sess, md5, length);
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
6889 }
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6890 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6891
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6892 case 0x0002: { /* We just set an "available" message? */
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6893 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6894 }
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6895
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6896 va_end(ap);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
6897
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
6898 return 0;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6899 }
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6900
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6901 static void oscar_set_permit_deny(GaimConnection *gc) {
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6902 GaimAccount *account = gaim_connection_get_account(gc);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6903 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6904 #ifdef NOSSI
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8092
diff changeset
6905 GSList *list;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6906 char buf[MAXMSGLEN];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6907 int at;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6908
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6909 switch(account->perm_deny) {
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6910 case GAIM_PRIVACY_ALLOW_ALL:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6911 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gaim_account_get_username(account));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6912 break;
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6913 case GAIM_PRIVACY_DENY_ALL:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6914 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gaim_account_get_username(account));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6915 break;
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6916 case GAIM_PRIVACY_ALLOW_USERS:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6917 list = account->permit;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6918 at = 0;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6919 while (list) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6920 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6921 list = list->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6922 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6923 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6924 break;
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6925 case GAIM_PRIVACY_DENY_USERS:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6926 list = account->deny;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6927 at = 0;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6928 while (list) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6929 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6930 list = list->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6931 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6932 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6933 break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6934 default:
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6935 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6936 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6937 #else
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6938 if (od->sess->ssi.received_data) {
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6939 switch (account->perm_deny) {
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6940 case GAIM_PRIVACY_ALLOW_ALL:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6941 aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6942 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6943 case GAIM_PRIVACY_ALLOW_BUDDYLIST:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6944 aim_ssi_setpermdeny(od->sess, 0x05, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6945 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6946 case GAIM_PRIVACY_ALLOW_USERS:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6947 aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6948 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6949 case GAIM_PRIVACY_DENY_ALL:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6950 aim_ssi_setpermdeny(od->sess, 0x02, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6951 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6952 case GAIM_PRIVACY_DENY_USERS:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6953 aim_ssi_setpermdeny(od->sess, 0x04, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6954 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6955 default:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6956 aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6957 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6958 }
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6959 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6960 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6961 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6962
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6963 static void oscar_add_permit(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6964 #ifdef NOSSI
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8092
diff changeset
6965 if (gc->account->perm_deny == 3)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6966 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6967 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6968 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6969 gaim_debug_info("oscar", "ssi: About to add a permit\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6970 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6971 aim_ssi_addpermit(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6972 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6973 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6974
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6975 static void oscar_add_deny(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6976 #ifdef NOSSI
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8092
diff changeset
6977 if (gc->account->perm_deny == 4)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6978 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6979 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6980 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6981 gaim_debug_info("oscar", "ssi: About to add a deny\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6982 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6983 aim_ssi_adddeny(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6984 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6985 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6986
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6987 static void oscar_rem_permit(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6988 #ifdef NOSSI
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8092
diff changeset
6989 if (gc->account->perm_deny == 3)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6990 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6991 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6992 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6993 gaim_debug_info("oscar", "ssi: About to delete a permit\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6994 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6995 aim_ssi_delpermit(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6996 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6997 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6998
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6999 static void oscar_rem_deny(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
7000 #ifdef NOSSI
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8092
diff changeset
7001 if (gc->account->perm_deny == 4)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
7002 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
7003 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7004 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7005 gaim_debug_info("oscar", "ssi: About to delete a deny\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7006 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
7007 aim_ssi_deldeny(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7008 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7009 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7010
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7011 static GList *
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7012 oscar_status_types(GaimAccount *account)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7013 {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7014 GList *status_types = NULL;
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7015 GaimStatusType *type;
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
7016
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
7017 g_return_val_if_fail(account != NULL, NULL);
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
7018
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7019 /* Oscar-common status types */
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7020 type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7021 OSCAR_STATUS_ID_OFFLINE,
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
7022 _("Offline"), FALSE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7023 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7024
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7025 type = gaim_status_type_new_full(GAIM_STATUS_ONLINE,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7026 OSCAR_STATUS_ID_ONLINE,
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
7027 _("Online"), FALSE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7028 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7029
10198
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7030 type = gaim_status_type_new_with_attrs(GAIM_STATUS_AVAILABLE,
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7031 OSCAR_STATUS_ID_AVAILABLE,
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7032 _("Available"), TRUE, TRUE, FALSE,
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7033 "message", _("Message"),
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7034 gaim_value_new(GAIM_TYPE_STRING), NULL);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7035 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7036
10195
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7037 type = gaim_status_type_new_with_attrs(GAIM_STATUS_AWAY,
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7038 OSCAR_STATUS_ID_AWAY,
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7039 _("Away"), TRUE, TRUE, FALSE,
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7040 "message", _("Message"),
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7041 gaim_value_new(GAIM_TYPE_STRING), NULL);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7042 status_types = g_list_append(status_types, type);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7043
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7044 type = gaim_status_type_new_full(GAIM_STATUS_HIDDEN,
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7045 OSCAR_STATUS_ID_INVISIBLE,
10198
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7046 _("Invisible"), TRUE, TRUE, FALSE);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7047 status_types = g_list_append(status_types, type);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7048
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7049 if (aim_sn_is_icq(gaim_account_get_username(account)) == FALSE )
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7050 return status_types;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7051
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7052 /* ICQ-specific status types */
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7053
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7054 type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7055 OSCAR_STATUS_ID_FREE4CHAT,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7056 _("Free For Chat"), TRUE, TRUE, FALSE);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
7057 status_types = g_list_append(status_types, type);
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
7058
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7059 type = gaim_status_type_new_full(GAIM_STATUS_UNAVAILABLE,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7060 OSCAR_STATUS_ID_OCCUPIED,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7061 _("Occupied"), TRUE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7062 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7063
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7064 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7065 OSCAR_STATUS_ID_DND,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7066 _("Do Not Disturb"), TRUE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7067 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7068
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7069 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7070 OSCAR_STATUS_ID_NA,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7071 _("Not Available"), TRUE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7072 status_types = g_list_append(status_types, type);
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7073
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7074 return status_types;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7075 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7076
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7077 static void oscar_ssi_editcomment(struct name_data *data, const char *text) {
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7078 GaimConnection *gc = data->gc;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7079 OscarData *od = gc->proto_data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7080 GaimBuddy *b;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7081 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7082
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7083 if (!(b = gaim_find_buddy(gaim_connection_get_account(data->gc), data->name))) {
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7084 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7085 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7086 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7087
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7088 if (!(g = gaim_find_buddys_group(b))) {
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7089 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7090 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7091 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7092
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7093 aim_ssi_editcomment(od->sess, g->name, data->name, text);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7094
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7095 if (!aim_sncmp(data->name, gc->account->username))
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7096 gaim_check_comment(od, text);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7097
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7098 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7099 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7100
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7101 static void oscar_buddycb_edit_comment(GaimBlistNode *node, gpointer ignore) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7102
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7103 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7104 GaimConnection *gc;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7105 OscarData *od;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7106 struct name_data *data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7107 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7108 char *comment;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7109 gchar *comment_utf8;
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7110 gchar *title;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7111
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7112 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7113
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7114 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7115 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7116 od = gc->proto_data;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7117
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7118 data = g_new(struct name_data, 1);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7119
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7120 if (!(g = gaim_find_buddys_group(buddy)))
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7121 return;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7122 comment = aim_ssi_getcomment(od->sess->ssi.local, g->name, buddy->name);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7123 comment_utf8 = comment ? gaim_utf8_try_convert(comment) : NULL;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7124
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7125 data->gc = gc;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7126 data->name = g_strdup(buddy->name);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7127 data->nick = NULL;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7128
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7129 title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7130 gaim_request_input(gc, title, _("Buddy Comment:"), NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
7131 comment_utf8, TRUE, FALSE, NULL,
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7132 _("OK"), G_CALLBACK(oscar_ssi_editcomment),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7133 _("Cancel"), G_CALLBACK(oscar_free_name_data),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7134 data);
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7135 g_free(title);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7136
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7137 free(comment);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7138 g_free(comment_utf8);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7139 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7140
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7141 static GList *oscar_buddy_menu(GaimBuddy *buddy) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7142
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7143 GaimConnection *gc = gaim_account_get_connection(buddy->account);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7144 OscarData *od = gc->proto_data;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7145
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7146 GList *m = NULL;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7147 GaimBlistNodeAction *act;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7148
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7149 act = gaim_blist_node_action_new(_("Edit Buddy Comment"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7150 oscar_buddycb_edit_comment, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7151 m = g_list_append(m, act);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7152
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7153 if (od->icq) {
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
7154 #if 0
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7155 act = gaim_blist_node_action_new(_("Get Status Msg"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7156 oscar_get_icqstatusmsg, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7157 m = g_list_append(m, act);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
7158 #endif
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7159 } else {
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
7160 aim_userinfo_t *userinfo;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7161 userinfo = aim_locate_finduserinfo(od->sess, buddy->name);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7162
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7163 if (userinfo && aim_sncmp(gaim_account_get_username(buddy->account), buddy->name) &&
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7164 GAIM_BUDDY_IS_ONLINE(buddy)) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7165
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
7166 if (userinfo->capabilities & AIM_CAPS_DIRECTIM) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7167 act = gaim_blist_node_action_new(_("Direct IM"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7168 oscar_ask_direct_im, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7169 m = g_list_append(m, act);
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
7170 }
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
7171 #if 0
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
7172 if (userinfo->capabilities & AIM_CAPS_GETFILE) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7173 act = gaim_blist_node_action_new(_("Get File"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7174 oscar_ask_getfile, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7175 m = g_list_append(m, act);
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
7176 }
4826
e6654fab588b [gaim-migrate @ 5151]
Mark Doliner <mark@kingant.net>
parents: 4825
diff changeset
7177 #endif
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7178 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7179 }
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
7180
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7181 if (od->sess->ssi.received_data) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7182 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, buddy->name);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7183 if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, buddy->name)) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7184 act = gaim_blist_node_action_new(_("Re-request Authorization"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7185 gaim_auth_sendrequest_menu, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7186 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7187 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
7188 }
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
7189
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7190 return m;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7191 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7192
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7193
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7194 static GList *oscar_blist_node_menu(GaimBlistNode *node) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7195 if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7196 return oscar_buddy_menu((GaimBuddy *) node);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7197 } else {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7198 return NULL;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7199 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7200 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7201
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7202 static void
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7203 oscar_icq_privacy_opts(GaimConnection *gc, GaimRequestFields *fields)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7204 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7205 OscarData *od = gc->proto_data;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7206 GaimAccount *account = gaim_connection_get_account(gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7207 GaimRequestField *f;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7208 gboolean auth, hide_ip, web_aware;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7209
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7210 f = gaim_request_fields_get_field(fields, "authorization");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7211 auth = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7212
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7213 f = gaim_request_fields_get_field(fields, "hide_ip");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7214 hide_ip = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7215
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7216 f = gaim_request_fields_get_field(fields, "web_aware");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7217 web_aware = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7218
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7219 gaim_account_set_bool(account, "authorization", auth);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7220 gaim_account_set_bool(account, "hide_ip", hide_ip);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7221 gaim_account_set_bool(account, "web_aware", web_aware);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7222
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7223 aim_icq_setsecurity(od->sess, auth, web_aware, hide_ip);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7224 }
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7225
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7226 static void
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7227 oscar_show_icq_privacy_opts(GaimPluginAction *action)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7228 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7229 GaimConnection *gc = (GaimConnection *) action->context;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7230 GaimAccount *account = gaim_connection_get_account(gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7231 GaimRequestFields *fields;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7232 GaimRequestFieldGroup *g;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7233 GaimRequestField *f;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7234 gboolean auth, hide_ip, web_aware;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7235
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7236 auth = gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7237 hide_ip = gaim_account_get_bool(account, "hide_ip", OSCAR_DEFAULT_HIDE_IP);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7238 web_aware = gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7239
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7240 fields = gaim_request_fields_new();
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7241
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7242 g = gaim_request_field_group_new(NULL);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7243
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7244 f = gaim_request_field_bool_new("authorization", _("Require authorization"), auth);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7245 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7246
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7247 f = gaim_request_field_bool_new("hide_ip", _("Hide IP address"), hide_ip);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7248 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7249
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7250 f = gaim_request_field_bool_new("web_aware", _("Web aware"), web_aware);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7251 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7252
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7253 gaim_request_fields_add_group(fields, g);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7254
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7255 gaim_request_fields(gc, _("ICQ Privacy Options"), _("ICQ Privacy Options"),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7256 NULL, fields,
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7257 _("OK"), G_CALLBACK(oscar_icq_privacy_opts),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7258 _("Cancel"), NULL, gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7259 }
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7260
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7261 static void oscar_format_screenname(GaimConnection *gc, const char *nick) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7262 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7263 if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), nick)) {
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7264 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7265 od->setnick = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7266 od->newsn = g_strdup(nick);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7267 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7268 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7269 aim_admin_setnick(od->sess, aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH), nick);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7270 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7271 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
7272 gaim_notify_error(gc, NULL, _("The new formatting is invalid."),
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
7273 _("Screen name formatting can change only capitalization and whitespace."));
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7274 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7275 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7276
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7277 static void oscar_show_format_screenname(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7278 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7279 GaimConnection *gc = (GaimConnection *) action->context;
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
7280 gaim_request_input(gc, NULL, _("New screen name formatting:"), NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
7281 gaim_connection_get_display_name(gc), FALSE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7282 _("OK"), G_CALLBACK(oscar_format_screenname),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7283 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7284 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7285 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7286
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7287 static void oscar_confirm_account(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7288 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7289 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7290 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7291 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7292
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7293 if (conn) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7294 aim_admin_reqconfirm(od->sess, conn);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7295 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7296 od->conf = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7297 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7298 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7299 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7300
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7301 static void oscar_show_email(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7302 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7303 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7304 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7305 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7306
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7307 if (conn) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7308 aim_admin_getinfo(od->sess, conn, 0x11);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7309 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7310 od->reqemail = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7311 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7312 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7313 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7314
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7315 static void oscar_change_email(GaimConnection *gc, const char *email)
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7316 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7317 OscarData *od = gc->proto_data;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7318 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7319
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7320 if (conn) {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7321 aim_admin_setemail(od->sess, conn, email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7322 } else {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7323 od->setemail = TRUE;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7324 od->email = g_strdup(email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7325 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7326 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7327 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
7328
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7329 static void oscar_show_change_email(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7330 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7331 GaimConnection *gc = (GaimConnection *) action->context;
6035
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
7332 gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
7333 FALSE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7334 _("OK"), G_CALLBACK(oscar_change_email),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7335 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7336 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7337 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7338
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7339 static void oscar_show_awaitingauth(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7340 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7341 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7342 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7343 gchar *nombre, *text, *tmp;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7344 GaimBlistNode *gnode, *cnode, *bnode;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7345 int num=0;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7346
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7347 text = g_strdup("");
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7348
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7349 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7350 GaimGroup *group = (GaimGroup *)gnode;
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7351 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7352 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7353 for (cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7354 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7355 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7356 for (bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7357 GaimBuddy *buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7358 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7359 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7360 if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7361 if (gaim_buddy_get_alias_only(buddy))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7362 nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_buddy_get_alias_only(buddy));
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7363 else
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7364 nombre = g_strdup_printf(" %s", buddy->name);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7365 tmp = g_strdup_printf("%s%s<br>", text, nombre);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7366 g_free(text);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7367 text = tmp;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7368 g_free(nombre);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7369 num++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7370 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7371 }
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7372 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7373 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7374
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7375 if (!num) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7376 g_free(text);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7377 text = g_strdup(_("<i>you are not waiting for authorization</i>"));
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7378 }
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7379
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7380 gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7381 "the following buddies"), _("You can re-request "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7382 "authorization from these buddies by "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7383 "right-clicking on them and selecting "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
7384 "\"Re-request Authorization.\""), text, NULL, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7385 g_free(text);
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7386 }
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7387
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7388 static void search_by_email_cb(GaimConnection *gc, const char *email)
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7389 {
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
7390 OscarData *od = (OscarData *)gc->proto_data;
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
7391
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
7392 aim_search_address(od->sess, od->conn, email);
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7393 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7394
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7395 static void oscar_show_find_email(GaimPluginAction *action)
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7396 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7397 GaimConnection *gc = (GaimConnection *) action->context;
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7398 gaim_request_input(gc, _("Find Buddy by E-mail"),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7399 _("Search for a buddy by e-mail address"),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7400 _("Type the e-mail address of the buddy you are "
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7401 "searching for."),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
7402 NULL, FALSE, FALSE, NULL,
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7403 _("Search"), G_CALLBACK(search_by_email_cb),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7404 _("Cancel"), NULL, gc);
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7405 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7406
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7407 static void oscar_show_set_info(GaimPluginAction *action)
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7408 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7409 GaimConnection *gc = (GaimConnection *) action->context;
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7410 gaim_account_request_change_user_info(gaim_connection_get_account(gc));
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7411 }
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7412
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7413 static void oscar_show_set_info_icqurl(GaimPluginAction *action)
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
7414 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7415 GaimConnection *gc = (GaimConnection *) action->context;
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
7416 gaim_notify_uri(gc, "http://www.icq.com/whitepages/user_details.php");
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
7417 }
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
7418
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7419 static void oscar_change_pass(GaimPluginAction *action)
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7420 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7421 GaimConnection *gc = (GaimConnection *) action->context;
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7422 gaim_account_request_change_password(gaim_connection_get_account(gc));
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7423 }
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7424
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7425 static void oscar_show_chpassurl(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7426 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7427 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7428 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7429 gchar *substituted = gaim_strreplace(od->sess->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc)));
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
7430 gaim_notify_uri(gc, substituted);
5517
e9b9fbf89c42 [gaim-migrate @ 5916]
Mark Doliner <mark@kingant.net>
parents: 5498
diff changeset
7431 g_free(substituted);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7432 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7433
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7434 static void oscar_show_imforwardingurl(GaimPluginAction *action)
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
7435 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7436 GaimConnection *gc = (GaimConnection *) action->context;
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
7437 gaim_notify_uri(gc, "http://mymobile.aol.com/dbreg/register?action=imf&clientID=1");
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
7438 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
7439
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7440 static void oscar_set_icon(GaimConnection *gc, const char *iconfile)
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7441 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7442 OscarData *od = gc->proto_data;
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
7443 aim_session_t *sess = od->sess;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7444 FILE *file;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7445 struct stat st;
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
7446
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7447 if (iconfile == NULL) {
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
7448 aim_ssi_delicon(od->sess);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
7449 } else if (!g_stat(iconfile, &st)) {
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7450 char *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
7451 file = g_fopen(iconfile, "rb");
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7452 if (file) {
6052
c062c4bf58ac [gaim-migrate @ 6502]
Mark Doliner <mark@kingant.net>
parents: 6051
diff changeset
7453 md5_state_t *state;
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7454 char md5[16];
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
7455 /* XXX - Use g_file_get_contents()? */
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7456 int len = fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7457 fclose(file);
6052
c062c4bf58ac [gaim-migrate @ 6502]
Mark Doliner <mark@kingant.net>
parents: 6051
diff changeset
7458 state = g_malloc(sizeof(md5_state_t));
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7459 md5_init(state);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7460 md5_append(state, buf, len);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7461 md5_finish(state, md5);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7462 g_free(state);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7463 aim_ssi_seticon(sess, md5, 16);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7464 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7465 gaim_debug_error("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7466 "Can't open buddy icon file!\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7467 g_free(buf);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7468 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7469 gaim_debug_error("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7470 "Can't stat buddy icon file!\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7471 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7472
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7473
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7474 static GList *oscar_actions(GaimPlugin *plugin, gpointer context)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7475 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7476 GaimConnection *gc = (GaimConnection *) context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7477 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7478 GList *m = NULL;
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7479 GaimPluginAction *act;
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7480
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7481 act = gaim_plugin_action_new(_("Set User Info..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7482 oscar_show_set_info);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7483 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7484
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7485 if (od->icq)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7486 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7487 act = gaim_plugin_action_new(_("Set User Info (URL)..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7488 oscar_show_set_info_icqurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7489 m = g_list_append(m, act);
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
7490 }
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
7491
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7492 act = gaim_plugin_action_new(_("Change Password..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7493 oscar_change_pass);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7494 m = g_list_append(m, act);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7495
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7496 if (od->sess->authinfo->chpassurl != NULL)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7497 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7498 act = gaim_plugin_action_new(_("Change Password (URL)"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7499 oscar_show_chpassurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7500 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7501
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7502 act = gaim_plugin_action_new(_("Configure IM Forwarding (URL)"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7503 oscar_show_imforwardingurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7504 m = g_list_append(m, act);
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
7505 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
7506
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7507 m = g_list_append(m, NULL);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7508
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7509 if (od->icq)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7510 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7511 /* ICQ actions */
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7512 act = gaim_plugin_action_new(_("Show privacy options..."),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7513 oscar_show_icq_privacy_opts);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7514 m = g_list_append(m, act);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7515 }
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7516 else
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7517 {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7518 /* AIM actions */
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7519 act = gaim_plugin_action_new(_("Format Screen Name..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7520 oscar_show_format_screenname);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7521 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7522
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7523 act = gaim_plugin_action_new(_("Confirm Account"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7524 oscar_confirm_account);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7525 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7526
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7527 act = gaim_plugin_action_new(_("Display Currently Registered Address"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7528 oscar_show_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7529 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7530
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7531 act = gaim_plugin_action_new(_("Change Currently Registered Address..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7532 oscar_show_change_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7533 m = g_list_append(m, act);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7534 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7535
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7536 m = g_list_append(m, NULL);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7537
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7538 act = gaim_plugin_action_new(_("Show Buddies Awaiting Authorization"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7539 oscar_show_awaitingauth);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7540 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7541
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7542 m = g_list_append(m, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7543
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7544 act = gaim_plugin_action_new(_("Search for Buddy by Email..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7545 oscar_show_find_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7546 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7547
8591
f96795b786d2 [gaim-migrate @ 9342]
Mark Doliner <mark@kingant.net>
parents: 8590
diff changeset
7548 #if 0
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7549 act = gaim_plugin_action_new(_("Search for Buddy by Information"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7550 show_find_info);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7551 m = g_list_append(m, act);
8591
f96795b786d2 [gaim-migrate @ 9342]
Mark Doliner <mark@kingant.net>
parents: 8590
diff changeset
7552 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7553
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7554 return m;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7555 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7556
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7557 static void oscar_change_passwd(GaimConnection *gc, const char *old, const char *new)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7558 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7559 OscarData *od = gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7560
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7561 if (od->icq) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7562 aim_icq_changepasswd(od->sess, new);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7563 } else {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7564 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7565 if (conn) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7566 aim_admin_changepasswd(od->sess, conn, new, old);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7567 } else {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7568 od->chpass = TRUE;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7569 od->oldp = g_strdup(old);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7570 od->newp = g_strdup(new);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7571 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7572 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7573 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7574 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7575
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
7576 static void oscar_convo_closed(GaimConnection *gc, const char *who)
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7577 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7578 OscarData *od = gc->proto_data;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
7579 struct oscar_direct_im *dim = oscar_direct_im_find(od, who);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7580
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7581 if (!dim)
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7582 return;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7583
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
7584 oscar_direct_im_destroy(od, dim);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7585 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7586
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7587 static void
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7588 recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data)
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7589 {
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7590 GaimConnection *gc = data;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7591 OscarData *od = gc->proto_data;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7592 aim_session_t *sess = od->sess;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7593 fu32_t presence;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7594
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7595 presence = aim_ssi_getpresence(sess->ssi.local);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7596
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7597 if (value) {
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
7598 /* Based on the packet capture I thought it was the first one */
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
7599 /* Stu thinks it's the second one. */
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
7600 /* presence |= 0x00400000; */
9971
ab5db2c5da79 [gaim-migrate @ 10882]
Mark Doliner <mark@kingant.net>
parents: 9948
diff changeset
7601 presence &= ~0x00020000;
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7602 aim_ssi_setpresence(sess, presence);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7603 } else {
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
7604 /* presence &= ~0x00400000; */
9971
ab5db2c5da79 [gaim-migrate @ 10882]
Mark Doliner <mark@kingant.net>
parents: 9948
diff changeset
7605 presence |= 0x00020000;
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7606 aim_ssi_setpresence(sess, presence);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7607 }
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7608 }
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7609
10653
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7610 #if USE_PRPL_PREFERENCES
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7611 static GaimPluginPrefFrame *
9936
3578cec797db [gaim-migrate @ 10828]
Mark Doliner <mark@kingant.net>
parents: 9935
diff changeset
7612 get_plugin_pref_frame(GaimPlugin *plugin)
3578cec797db [gaim-migrate @ 10828]
Mark Doliner <mark@kingant.net>
parents: 9935
diff changeset
7613 {
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7614 GaimPluginPrefFrame *frame;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7615 GaimPluginPref *ppref;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7616
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7617 frame = gaim_plugin_pref_frame_new();
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7618
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7619 ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/recent_buddies", _("Use recent buddies group"));
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7620 gaim_plugin_pref_frame_add(frame, ppref);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7621
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7622 ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/show_idle", _("Show how long you have been idle"));
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7623 gaim_plugin_pref_frame_add(frame, ppref);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7624
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7625 return frame;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7626 }
10653
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7627 #endif
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7628
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7629 static GaimPluginProtocolInfo prpl_info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7630 {
9308
b3bda982996b [gaim-migrate @ 10116]
Sean Egan <seanegan@gmail.com>
parents: 9295
diff changeset
7631 OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE,
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7632 NULL, /* user_splits */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7633 NULL, /* protocol_options */
10674
9aa1d4adf3e9 [gaim-migrate @ 12214]
Nathan Walp <nwalp@pidgin.im>
parents: 10662
diff changeset
7634 {"jpeg,gif,bmp,ico", 48, 48, 50, 50,
9aa1d4adf3e9 [gaim-migrate @ 12214]
Nathan Walp <nwalp@pidgin.im>
parents: 10662
diff changeset
7635 GAIM_ICON_SCALE_SEND | GAIM_ICON_SCALE_DISPLAY}, /* icon_spec */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7636 oscar_list_icon, /* list_icon */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7637 oscar_list_emblems, /* list_emblems */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7638 oscar_status_text, /* status_text */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7639 oscar_tooltip_text, /* tooltip_text */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
7640 oscar_status_types, /* status_types */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7641 oscar_blist_node_menu, /* blist_node_menu */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7642 oscar_chat_info, /* chat_info */
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7643 oscar_chat_info_defaults, /* chat_info_defaults */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7644 oscar_login, /* login */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7645 oscar_close, /* close */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7646 oscar_send_im, /* send_im */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7647 oscar_set_info, /* set_info */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7648 oscar_send_typing, /* send_typing */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7649 oscar_get_info, /* get_info */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
7650 oscar_set_status, /* set_status */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7651 oscar_set_idle, /* set_idle */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7652 oscar_change_passwd, /* change_passwd */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7653 oscar_add_buddy, /* add_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7654 oscar_add_buddies, /* add_buddies */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7655 oscar_remove_buddy, /* remove_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7656 oscar_remove_buddies, /* remove_buddies */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7657 oscar_add_permit, /* add_permit */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7658 oscar_add_deny, /* add_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7659 oscar_rem_permit, /* rem_permit */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7660 oscar_rem_deny, /* rem_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7661 oscar_set_permit_deny, /* set_permit_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7662 oscar_warn, /* warn */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7663 oscar_join_chat, /* join_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7664 NULL, /* reject_chat */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
7665 oscar_get_chat_name, /* get_chat_name */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7666 oscar_chat_invite, /* chat_invite */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7667 oscar_chat_leave, /* chat_leave */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7668 NULL, /* chat_whisper */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7669 oscar_send_chat, /* chat_send */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7670 oscar_keepalive, /* keepalive */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7671 NULL, /* register_user */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7672 NULL, /* get_cb_info */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7673 NULL, /* get_cb_away */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7674 #ifndef NOSSI
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7675 oscar_alias_buddy, /* alias_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7676 oscar_move_buddy, /* group_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7677 oscar_rename_group, /* rename_group */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7678 #else
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7679 NULL, /* alias_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7680 NULL, /* group_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7681 NULL, /* rename_group */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7682 #endif
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7683 NULL, /* buddy_free */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7684 oscar_convo_closed, /* convo_closed */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7685 NULL, /* normalize */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7686 oscar_set_icon, /* set_buddy_icon */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7687 NULL, /* remove_group */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7688 NULL, /* get_cb_real_name */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7689 NULL, /* set_chat_topic */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7690 NULL, /* find_blist_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7691 NULL, /* roomlist_get_list */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7692 NULL, /* roomlist_cancel */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7693 NULL, /* roomlist_expand_category */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7694 oscar_can_receive_file, /* can_receive_file */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
7695 oscar_send_file /* send_file */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7696 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7697
10653
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7698 #if USE_PRPL_PREFERENCES
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7699 static GaimPluginUiInfo prefs_info = {
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7700 get_plugin_pref_frame
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7701 };
10653
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7702 #endif
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7703
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7704 static GaimPluginInfo info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7705 {
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7706 GAIM_PLUGIN_MAGIC,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7707 GAIM_MAJOR_VERSION,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7708 GAIM_MINOR_VERSION,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7709 GAIM_PLUGIN_PROTOCOL, /**< type */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7710 NULL, /**< ui_requirement */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7711 0, /**< flags */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7712 NULL, /**< dependencies */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7713 GAIM_PRIORITY_DEFAULT, /**< priority */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7714
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7715 "prpl-oscar", /**< id */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7716 "AIM/ICQ", /**< name */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7717 VERSION, /**< version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7718 /** summary */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7719 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7720 /** description */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7721 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7722 NULL, /**< author */
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
7723 GAIM_WEBSITE, /**< homepage */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7724
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7725 NULL, /**< load */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7726 NULL, /**< unload */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7727 NULL, /**< destroy */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7728
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7729 NULL, /**< ui_info */
8993
294ae6548d4e [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8985
diff changeset
7730 &prpl_info, /**< extra_info */
10653
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7731 #if USE_PRPL_PREFERENCES
10487
659edfcac14e [gaim-migrate @ 11777]
Sean Egan <seanegan@gmail.com>
parents: 10485
diff changeset
7732 NULL, /**< prefs_info */
10653
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7733 #else
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7734 NULL, /**< prefs_info */
20cbadb004a0 [gaim-migrate @ 12181]
Mark Doliner <mark@kingant.net>
parents: 10646
diff changeset
7735 #endif
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
7736 oscar_actions
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7737 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7738
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7739 static void
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
7740 init_plugin(GaimPlugin *plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7741 {
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
7742 GaimAccountOption *option;
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
7743
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7744 option = gaim_account_option_string_new(_("Auth host"), "server", FAIM_LOGIN_SERVER);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7745 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7746
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7747 option = gaim_account_option_int_new(_("Auth port"), "port", FAIM_LOGIN_PORT);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7748 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7749
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7750 option = gaim_account_option_string_new(_("Encoding"), "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7751 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7752
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7753 gaim_prefs_add_none("/plugins/prpl/oscar");
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
7754 gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE);
9942
3941c39ccff5 [gaim-migrate @ 10834]
Mark Doliner <mark@kingant.net>
parents: 9936
diff changeset
7755 gaim_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7756 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7757
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
7758 GAIM_INIT_PLUGIN(oscar, init_plugin, info);