annotate src/protocols/oscar/oscar.c @ 12216:4d3119205a33

[gaim-migrate @ 14518] Remove GaimConvImFlags and GaimConvChatFlags - use GaimMessageFlags everywhere instead. Add a new GAIM_MESSAGE_IMAGES flag, and set it when sending a message containing images. When sending a message, the core will now always send "html" to the prpls, just like it expects to receive html from the prpls for received messages. This will allow text prpls such as SILC to support IM images and differentiate them from user input. Previously gaim_unescape_html() was used before passing the message to the prpl, now the prpl does this itself if it needs it. I think I updated all the prpls correctly, but I'm not so sure about sametime. committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Thu, 24 Nov 2005 20:47:46 +0000
parents 2de8b6772d00
children d3cb077caf3e
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
11155
92453bf9b86b [gaim-migrate @ 13237]
Mark Doliner <mark@kingant.net>
parents: 11153
diff changeset
7 * Some code copyright (C) 2001-2005, Mark Doliner <thekingant@users.sourceforge.net>
11049
c716cc44bfaa [gaim-migrate @ 12983]
Jonathan Clark <ardentlygnarly>
parents: 11033
diff changeset
8 * Some code copyright (C) 2005, Jonathan Clark <ardentlygnarly@users.sourceforge.net>
6302
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
9 *
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
10 * 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
11 * 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
12 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 * This program is free software; you can redistribute it and/or modify
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 * 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
15 * the Free Software Foundation; either version 2 of the License, or
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 * (at your option) any later version.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 * This program is distributed in the hope that it will be useful,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10485
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 * GNU General Public License for more details.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 * You should have received a copy of the GNU General Public License
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 * along with this program; if not, write to the Free Software
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
28 #include "internal.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
29
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
30 #include "account.h"
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
31 #include "accountopt.h"
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
32 #include "buddyicon.h"
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
33 #include "cipher.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
34 #include "conversation.h"
7083
3100a6e03644 [gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents: 7082
diff changeset
35 #include "core.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
36 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
37 #include "ft.h"
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
38 #include "imgstore.h"
8231
f50c059b6384 [gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents: 8227
diff changeset
39 #include "network.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
40 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
41 #include "privacy.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
42 #include "prpl.h"
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
43 #include "proxy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
44 #include "request.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
45 #include "util.h"
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
46 #include "version.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
47
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
48 #include "aim.h"
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
50 #define OSCAR_STATUS_ID_INVISIBLE "invisible"
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
51 #define OSCAR_STATUS_ID_OFFLINE "offline"
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
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
63 #define OSCAR_DEFAULT_LOGIN_SERVER "login.oscar.aol.com"
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
64 #define OSCAR_DEFAULT_LOGIN_PORT 5190
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
65 #define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1"
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
66 #define OSCAR_DEFAULT_AUTHORIZATION TRUE
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
67 #define OSCAR_DEFAULT_HIDE_IP TRUE
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
68 #define OSCAR_DEFAULT_WEB_AWARE FALSE
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
69
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
70 /* Milliseconds each file transfer ip address will be given to make a connection. */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
71 #define FT_CLIENTIP_TIMEOUT 1000 /* 5000 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
72 #define FT_VERIFIEDIP_TIMEOUT 5000 /* 15000 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
73 #define FT_REDIR_TIMEOUT 10000 /* 20000 */ /* Time to wait for redirected transfer */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
74 #define FT_PROXYIP_TIMEOUT 300000 /* 120000 */ /* Time to create a checksum for VERY large files */
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
75
7376
0721e3fe57c9 [gaim-migrate @ 7971]
Mark Doliner <mark@kingant.net>
parents: 7366
diff changeset
76 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
77 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
78
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
79 static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02};
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
80 static fu8_t features_icq[] = {0x01, 0x06};
11172
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
81 static fu8_t features_icq_offline[] = {0x01};
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
82 static fu8_t ck[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
84 typedef struct _OscarData OscarData;
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
85 struct _OscarData {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
86 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
87 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
88
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89 guint cnpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 guint paspa;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
91 guint emlpa;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
92 guint icopa;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
94 gboolean iconconnecting;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
95 gboolean set_icon;
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
96
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
97 GSList *create_rooms;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99 gboolean conf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
100 gboolean reqemail;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
101 gboolean setemail;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
102 char *email;
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
103 gboolean setnick;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
104 char *newsn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
105 gboolean chpass;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
106 char *oldp;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107 char *newp;
11651
723487d07aa0 [gaim-migrate @ 13935]
Mark Doliner <mark@kingant.net>
parents: 11643
diff changeset
108
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
109 GSList *oscar_chats;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
110 GSList *direct_ims;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
111 GSList *file_transfers;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
112 GHashTable *buddyinfo;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
113 GSList *requesticon;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
114
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
115 gboolean killme;
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
116 gboolean icq;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
117 guint icontimer;
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
118 guint getblisttimer;
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
119 guint getinfotimer;
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
120 gint timeoffset;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
121
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
122 struct {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
123 guint maxwatchers; /* max users who can watch you */
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
124 guint maxbuddies; /* max users you can watch */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
125 guint maxgroups; /* max groups in server list */
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
126 guint maxpermits; /* max users on permit list */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
127 guint maxdenies; /* max users on deny list */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
128 guint maxsiglen; /* max size (bytes) of profile */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
129 guint maxawaymsglen; /* max size (bytes) of posted away message */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
130 } rights;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
131 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
132
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
133 struct create_room {
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
134 char *name;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
135 int exchange;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
136 };
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
137
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 struct chat_connection {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
139 char *name;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
140 char *show; /* AOL did something funny to us */
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
141 fu16_t exchange;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
142 fu16_t instance;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
143 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
144 int inpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145 int id;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
146 GaimConnection *gc; /* i hate this. */
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
147 GaimConversation *conv; /* bah. */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
148 int maxlen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
149 int maxvis;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
150 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
151
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
152 struct oscar_direct_im {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
153 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
154 char name[80];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
155 int watcher;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
156 aim_conn_t *conn;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
157 gboolean connected;
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
158 gboolean gpc_pend;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
159 gboolean killme;
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
160 gboolean donttryagain;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
161 };
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 struct ask_direct {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
164 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
165 char *sn;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
166 char ip[64];
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
167 fu8_t cookie[8];
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
168 gboolean donttryagain;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
169 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
170
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
171 /*
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
172 * Various PRPL-specific buddy info that we want to keep track of
11651
723487d07aa0 [gaim-migrate @ 13935]
Mark Doliner <mark@kingant.net>
parents: 11643
diff changeset
173 * Some other info is maintained by locate.c, and I'd like to move
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
174 * the rest of this to libfaim, mostly im.c
11651
723487d07aa0 [gaim-migrate @ 13935]
Mark Doliner <mark@kingant.net>
parents: 11643
diff changeset
175 *
723487d07aa0 [gaim-migrate @ 13935]
Mark Doliner <mark@kingant.net>
parents: 11643
diff changeset
176 * TODO: I think all of this should use the status API.
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
177 */
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
178 struct buddyinfo {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
179 gboolean typingnot;
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
180 gchar *availmsg;
6857
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
181 fu32_t ipaddr;
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
182
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
183 unsigned long ico_me_len;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
184 unsigned long ico_me_csum;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
185 time_t ico_me_time;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
186 gboolean ico_informed;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
187
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
188 unsigned long ico_len;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
189 unsigned long ico_csum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
190 time_t ico_time;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
191 gboolean ico_need;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
192 gboolean ico_sent;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
193 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
194
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
195 struct name_data {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
196 GaimConnection *gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
197 gchar *name;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
198 gchar *nick;
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
199 };
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
200
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
201 static char *msgerrreason[] = {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
202 N_("Invalid error"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
203 N_("Invalid SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
204 N_("Rate to host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
205 N_("Rate to client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
206 N_("Not logged in"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
207 N_("Service unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
208 N_("Service not defined"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
209 N_("Obsolete SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
210 N_("Not supported by host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
211 N_("Not supported by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
212 N_("Refused by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
213 N_("Reply too big"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
214 N_("Responses lost"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
215 N_("Request denied"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
216 N_("Busted SNAC payload"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
217 N_("Insufficient rights"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
218 N_("In local permit/deny"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
219 N_("Too evil (sender)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
220 N_("Too evil (receiver)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
221 N_("User temporarily unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
222 N_("No match"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
223 N_("List overflow"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
224 N_("Request ambiguous"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
225 N_("Queue full"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
226 N_("Not while on AOL")
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
227 };
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
228 static int msgerrreasonlen = 25;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
229
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
230 /* All the libfaim->gaim callback functions */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
231 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
232 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
233 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
234 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
235 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
236 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
237 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
238 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
239 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
240 static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
241 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
242 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
243 static int gaim_reqinfo_timeout (aim_session_t *, aim_frame_t *, ...);
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
244 static int gaim_got_infoblock (aim_session_t *sess, aim_frame_t *fr, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
245 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
246 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
247 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
248 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
249 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
250 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
251 static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
252 static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
253 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
254 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
255 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
256 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
257 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
258 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
259 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
260 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
261 static int gaim_connerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
262 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
263 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
264 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
265 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
266 static int conninitdone_email (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
267 static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
268 static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
269 static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
270 static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
271 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
272 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
273 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
274 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
275 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
276 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
277 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
278 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
279 static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
280 static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
281 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
282
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
283 static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
284 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
285 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
286 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
287 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
288 static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
289 static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
290 static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
291 static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
292
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
293 /* for DirectIM/image transfer */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
294 static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
295 static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
296 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
297 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
298
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
299 /* for file transfer */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
300 static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
301 static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
302 static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
303 static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
304
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
305 static gboolean gaim_icon_timerfunc(gpointer data);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
306 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
307 static void oscar_xfer_init_recv(GaimXfer *xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
308 static void oscar_xfer_init_send(GaimXfer *xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
309
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
310 static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const guchar *cookie);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
311 static void recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data);
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
312 static void oscar_set_info(GaimConnection *gc, const char *info);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
313 static void oscar_set_info_and_status(GaimAccount *account, gboolean setinfo, const char *rawinfo, gboolean setstatus, GaimStatus *status);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
314
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
315 static void oscar_free_name_data(struct name_data *data) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
316 g_free(data->name);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
317 g_free(data->nick);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
318 g_free(data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
319 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
320
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
321 static void oscar_free_buddyinfo(void *data) {
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
322 struct buddyinfo *bi = data;
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
323 g_free(bi->availmsg);
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
324 g_free(bi);
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
325 }
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
326
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
327 static fu32_t oscar_charset_check(const char *utf8)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
328 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
329 int i = 0;
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
330 int charset = AIM_CHARSET_ASCII;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
331
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
332 /* Determine how we can send this message. Per the warnings elsewhere
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
333 * in this file, these little checks determine the simplest encoding
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
334 * we can use for a given message send using it. */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
335 while (utf8[i]) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
336 if ((unsigned char)utf8[i] > 0x7f) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
337 /* not ASCII! */
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
338 charset = AIM_CHARSET_CUSTOM;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
339 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
340 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
341 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
342 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
343 while (utf8[i]) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
344 /* ISO-8859-1 is 0x00-0xbf in the first byte
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
345 * followed by 0xc0-0xc3 in the second */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
346 if ((unsigned char)utf8[i] < 0x80) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
347 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
348 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
349 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
350 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
351 i += 2;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
352 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
353 }
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
354 charset = AIM_CHARSET_UNICODE;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
355 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
356 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
357
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
358 return charset;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
359 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
360
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
361 /*
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
362 * Take a string of the form charset="bleh" where bleh is
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
363 * one of us-ascii, utf-8, iso-8859-1, or unicode-2-0, and
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
364 * return a newly allocated string containing bleh.
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
365 */
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
366 static gchar *oscar_encoding_extract(const char *encoding)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
367 {
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
368 gchar *ret = NULL;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
369 char *begin, *end;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
370
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
371 g_return_val_if_fail(encoding != NULL, NULL);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
372
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
373 /* Make sure encoding begins with charset= */
10540
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
374 if (strncmp(encoding, "text/aolrtf; charset=", 21) &&
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
375 strncmp(encoding, "text/x-aolrtf; charset=", 23))
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
376 {
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
377 return NULL;
10540
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
378 }
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
379
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
380 begin = strchr(encoding, '"');
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
381 end = strrchr(encoding, '"');
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
382
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
383 if ((begin == NULL) || (end == NULL) || (begin >= end))
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
384 return NULL;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
385
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
386 ret = g_strndup(begin+1, (end-1) - begin);
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
387
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
388 return ret;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
389 }
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
390
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
391 static gchar *
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
392 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
393 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
394 gchar *utf8 = NULL;
9595
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 if ((encoding == NULL) || encoding[0] == '\0') {
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
397 gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n");
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
398 } else if (!strcasecmp(encoding, "iso-8859-1")) {
10376
7196933335d9 [gaim-migrate @ 11601]
Sean Egan <seanegan@gmail.com>
parents: 10375
diff changeset
399 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
400 } 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
401 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
402 } else if (!strcasecmp(encoding, "unicode-2-0")) {
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
403 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
404 } else if (strcasecmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) {
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
405 gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", "
10096
2923a6c59192 [gaim-migrate @ 11118]
Mark Doliner <mark@kingant.net>
parents: 10087
diff changeset
406 "attempting to convert to UTF-8 anyway\n", encoding);
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
407 utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL);
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
408 }
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
409
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
410 /*
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
411 * 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
412 * 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
413 * 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
414 * just copy it.
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
415 */
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
416 if (utf8 == NULL) {
9638
201c8fe4cee3 [gaim-migrate @ 10486]
Ethan Blanton <elb@pidgin.im>
parents: 9634
diff changeset
417 if (textlen != 0 && *text != '\0'
201c8fe4cee3 [gaim-migrate @ 10486]
Ethan Blanton <elb@pidgin.im>
parents: 9634
diff changeset
418 && !g_utf8_validate(text, textlen, NULL))
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
419 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
420 else
9481
683660b4efeb [gaim-migrate @ 10306]
Ethan Blanton <elb@pidgin.im>
parents: 9476
diff changeset
421 utf8 = g_strndup(text, textlen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
422 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
423
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
424 return utf8;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
425 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
426
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
427 static gchar *
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
428 gaim_plugin_oscar_convert_to_utf8(const gchar *data, gsize datalen, const char *charsetstr, gboolean fallback)
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
429 {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
430 gchar *ret = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
431 GError *err = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
432
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
433 if ((charsetstr == NULL) || (*charsetstr == '\0'))
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
434 return NULL;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
435
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
436 if (strcasecmp("UTF-8", charsetstr)) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
437 if (fallback)
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
438 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
439 else
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
440 ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
441 if (err != NULL) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
442 gaim_debug_warning("oscar", "Conversation from %s failed: %s.\n",
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
443 charsetstr, err->message);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
444 g_error_free(err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
445 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
446 } else {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
447 if (g_utf8_validate(data, datalen, NULL))
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
448 ret = g_strndup(data, datalen);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
449 else
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
450 gaim_debug_warning("oscar", "String is not valid UTF-8.\n");
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
451 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
452
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
453 return ret;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
454 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
455
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
456 /*
11081
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
457 * This attemps to decode an incoming IM into a UTF8 string.
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
458 *
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
459 * We try decoding using two different character sets. The charset
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
460 * 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
461 * 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
462 * 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
463 * able to deal with that crap, then people complain like banshees.
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
464 * charsetstr1 is always set to what the correct encoding should be.
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
465 */
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
466 static gchar *
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
467 gaim_plugin_oscar_decode_im_part(GaimAccount *account, const char *sourcesn, fu16_t charset, fu16_t charsubset, const gchar *data, gsize datalen)
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
468 {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
469 gchar *ret = NULL;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
470 const gchar *charsetstr1, *charsetstr2;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
471
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
472 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
473
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
474 if ((datalen == 0) || (data == NULL))
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
475 return NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
476
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
477 if (charset == AIM_CHARSET_UNICODE) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
478 charsetstr1 = "UCS-2BE";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
479 charsetstr2 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
480 } else if (charset == AIM_CHARSET_CUSTOM) {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
481 if ((sourcesn != NULL) && isdigit(sourcesn[0]))
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
482 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
483 else
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
484 charsetstr1 = "ISO-8859-1";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
485 charsetstr2 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
486 } else if (charset == AIM_CHARSET_ASCII) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
487 /* Should just be "ASCII" */
9914
3df9ffcb9b06 [gaim-migrate @ 10806]
Mark Doliner <mark@kingant.net>
parents: 9908
diff changeset
488 charsetstr1 = "ASCII";
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
489 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
490 } else if (charset == 0x000d) {
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
491 /* 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
492 charsetstr1 = "ISO-8859-1";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
493 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
494 } else {
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
495 /* Unknown, hope for valid UTF-8... */
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
496 charsetstr1 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
497 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
498 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
499
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
500 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr1, FALSE);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
501 if (ret == NULL)
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
502 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr2, TRUE);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
503 if (ret == NULL)
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
504 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
505
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
506 return ret;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
507 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
508
11081
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
509 /*
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
510 * Figure out what encoding to use when sending a given outgoing message.
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
511 */
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
512 static void
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
513 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
514 gchar **msg, int *msglen_int,
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
515 fu16_t *charset, fu16_t *charsubset)
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
516 {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
517 OscarData *od = gc->proto_data;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
518 GaimAccount *account = gaim_connection_get_account(gc);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
519 GError *err = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
520 aim_userinfo_t *userinfo = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
521 const gchar *charsetstr;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
522 gsize msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
523
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
524 /* Attempt to send as ASCII */
10098
fb4216714dac [gaim-migrate @ 11120]
Mark Doliner <mark@kingant.net>
parents: 10097
diff changeset
525 if (oscar_charset_check(from) == AIM_CHARSET_ASCII) {
10097
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
526 *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
527 *charset = AIM_CHARSET_ASCII;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
528 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
529 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
530 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
531 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
532
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
533 /*
10565
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
534 * 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
535 * buddy list, and they are advertising the Unicode
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
536 * capability, and they are online, then attempt to send
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
537 * as UCS-2BE.
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
538 */
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
539 if ((destsn != NULL) && aim_sn_is_icq(destsn))
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
540 userinfo = aim_locate_finduserinfo(od->sess, destsn);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
541
10565
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
542 if ((userinfo != NULL) && (userinfo->capabilities & AIM_CAPS_ICQUTF8))
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
543 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
544 GaimBuddy *b;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
545 b = gaim_find_buddy(account, destsn);
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
546 if ((b != NULL) && (GAIM_BUDDY_IS_ONLINE(b)))
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
547 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
548 *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
549 if (*msg != NULL)
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
550 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
551 *charset = AIM_CHARSET_UNICODE;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
552 *charsubset = 0x0000;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
553 *msglen_int = msglen;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
554 return;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
555 }
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
556 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
557 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
558
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 * 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
561 * ICQ then attempt to send as the user specified character encoding.
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
562 */
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
563 charsetstr = "ISO-8859-1";
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
564 if ((destsn != NULL) && aim_sn_is_icq(destsn))
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
565 charsetstr = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
566
10097
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
567 /*
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
568 * 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
569 * can be converted to "charsetstr"
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
570 */
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
571 *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
572 if (*msg != NULL) {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
573 *charset = AIM_CHARSET_CUSTOM;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
574 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
575 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
576 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
577 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
578
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
579 /*
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
580 * Nothing else worked, so send as UCS-2BE.
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
581 */
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
582 *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
583 if (*msg != NULL) {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
584 *charset = AIM_CHARSET_UNICODE;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
585 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
586 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
587 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
588 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
589
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
590 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
591 g_error_free(err);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
592
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
593 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
594 *msg = g_strdup(from);
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
595 *msglen_int = strlen(*msg);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
596 *charset = AIM_CHARSET_ASCII;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
597 *charsubset = 0x0000;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
598 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
599 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
600
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
601 gchar *oscar_caps_to_string(guint caps)
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
602 {
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
603 GString *str;
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
604 gchar *tmp;
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
605 guint bit = 1;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
606
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
607 str = g_string_new("");
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
608
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
609 if (!caps) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
610 return NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
611 } else while (bit <= AIM_CAPS_LAST) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
612 if (bit & caps) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
613 switch (bit) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
614 case AIM_CAPS_BUDDYICON:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
615 tmp = _("Buddy Icon");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
616 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
617 case AIM_CAPS_TALK:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
618 tmp = _("Voice");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
619 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
620 case AIM_CAPS_DIRECTIM:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
621 tmp = _("AIM Direct IM");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
622 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
623 case AIM_CAPS_CHAT:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
624 tmp = _("Chat");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
625 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
626 case AIM_CAPS_GETFILE:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
627 tmp = _("Get File");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
628 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
629 case AIM_CAPS_SENDFILE:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
630 tmp = _("Send File");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
631 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
632 case AIM_CAPS_GAMES:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
633 case AIM_CAPS_GAMES2:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
634 tmp = _("Games");
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_ADDINS:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
637 tmp = _("Add-Ins");
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_SENDBUDDYLIST:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
640 tmp = _("Send Buddy List");
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_ICQ_DIRECT:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
643 tmp = _("ICQ Direct Connect");
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_APINFO:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
646 tmp = _("AP User");
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_ICQRTF:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
649 tmp = _("ICQ RTF");
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_EMPTY:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
652 tmp = _("Nihilist");
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_ICQSERVERRELAY:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
655 tmp = _("ICQ Server Relay");
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 case AIM_CAPS_ICQUTF8OLD:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
658 tmp = _("Old ICQ UTF8");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
659 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
660 case AIM_CAPS_TRILLIANCRYPT:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
661 tmp = _("Trillian Encryption");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
662 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
663 case AIM_CAPS_ICQUTF8:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
664 tmp = _("ICQ UTF8");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
665 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
666 case AIM_CAPS_HIPTOP:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
667 tmp = _("Hiptop");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
668 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
669 case AIM_CAPS_SECUREIM:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
670 tmp = _("Security Enabled");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
671 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
672 case AIM_CAPS_VIDEO:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
673 tmp = _("Video Chat");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
674 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
675 /* Not actually sure about this one... WinAIM doesn't show anything */
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
676 case AIM_CAPS_ICHATAV:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
677 tmp = _("iChat AV");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
678 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
679 case AIM_CAPS_LIVEVIDEO:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
680 tmp = _("Live Video");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
681 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
682 case AIM_CAPS_CAMERA:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
683 tmp = _("Camera");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
684 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
685 default:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
686 tmp = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
687 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
688 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
689 if (tmp)
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
690 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
691 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
692 bit <<= 1;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
693 }
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
694
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
695 return g_string_free(str, FALSE);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
696 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
697
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
698 static char *oscar_icqstatus(int state) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
699 /* 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
700 if (state & AIM_ICQ_STATE_CHAT)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
701 return g_strdup_printf(_("Free For Chat"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
702 else if (state & AIM_ICQ_STATE_DND)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
703 return g_strdup_printf(_("Do Not Disturb"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
704 else if (state & AIM_ICQ_STATE_OUT)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
705 return g_strdup_printf(_("Not Available"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
706 else if (state & AIM_ICQ_STATE_BUSY)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
707 return g_strdup_printf(_("Occupied"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
708 else if (state & AIM_ICQ_STATE_AWAY)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
709 return g_strdup_printf(_("Away"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
710 else if (state & AIM_ICQ_STATE_WEBAWARE)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
711 return g_strdup_printf(_("Web Aware"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
712 else if (state & AIM_ICQ_STATE_INVISIBLE)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
713 return g_strdup_printf(_("Invisible"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
714 else
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
715 return g_strdup_printf(_("Online"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
716 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
717
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
718 static void
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
719 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
720 {
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
721 gchar *utf8;
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
722
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
723 if (value && value[0] && (utf8 = gaim_utf8_try_convert(value))) {
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
724 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
725 g_free(utf8);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
726 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
727 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
728
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
729 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
730 {
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
731 OscarData *od;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
732 GaimAccount *account;
10517
461334f300d7 [gaim-migrate @ 11821]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10504
diff changeset
733 GaimPresence *presence = NULL;
461334f300d7 [gaim-migrate @ 11821]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10504
diff changeset
734 GaimStatus *status = NULL;
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
735 GaimGroup *g = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
736 struct buddyinfo *bi = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
737 char *tmp;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
738
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
739 od = gc->proto_data;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
740 account = gaim_connection_get_account(gc);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
741
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
742 if ((str == NULL) || (newline == NULL) || ((b == NULL) && (userinfo == NULL)))
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
743 return;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
744
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
745 if (userinfo == NULL)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
746 userinfo = aim_locate_finduserinfo(od->sess, b->name);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
747
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
748 if (b == NULL)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
749 b = gaim_find_buddy(account, userinfo->sn);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
750
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
751 if (b != NULL) {
12088
980c877bd238 [gaim-migrate @ 14385]
Mark Doliner <mark@kingant.net>
parents: 12049
diff changeset
752 g = gaim_buddy_get_group(b);
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
753 presence = gaim_buddy_get_presence(b);
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
754 status = gaim_presence_get_active_status(presence);
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
755 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
756
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
757 if (userinfo != NULL)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
758 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
759
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
760 if (b != NULL) {
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
761 if (gaim_presence_is_online(presence)) {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
762 if (aim_sn_is_icq(b->name)) {
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
763 GaimStatus *status = gaim_presence_get_active_status(presence);
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
764 oscar_string_append(str, newline, _("Status"), gaim_status_get_name(status));
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
765 }
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
766 } else {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
767 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
768 if (aim_ssi_waitingforauth(od->sess->ssi.local, tmp, b->name))
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
769 oscar_string_append(str, newline, _("Status"), _("Not Authorized"));
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
770 else
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
771 oscar_string_append(str, newline, _("Status"), _("Offline"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
772 }
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
773 }
8701
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 ((bi != NULL) && (bi->ipaddr != 0)) {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
776 tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
777 (bi->ipaddr & 0xff000000) >> 24,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
778 (bi->ipaddr & 0x00ff0000) >> 16,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
779 (bi->ipaddr & 0x0000ff00) >> 8,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
780 (bi->ipaddr & 0x000000ff));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
781 oscar_string_append(str, newline, _("IP Address"), tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
782 g_free(tmp);
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
11257
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
785
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
786 if ((userinfo != NULL) && (userinfo->warnlevel != 0)) {
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
787 tmp = g_strdup_printf("%d", (int)(userinfo->warnlevel/10.0 + .5));
11257
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
788 oscar_string_append(str, newline, _("Warning Level"), tmp);
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
789 g_free(tmp);
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
790 }
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
791
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
792 if ((userinfo != NULL) && (userinfo->capabilities != 0)) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
793 tmp = oscar_caps_to_string(userinfo->capabilities);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
794 oscar_string_append(str, newline, _("Capabilities"), tmp);
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
795 g_free(tmp);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
796 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
797
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
798 if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
799 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
800 if (tmp != NULL) {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
801 char *tmp2 = g_markup_escape_text(tmp, strlen(tmp));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
802 g_free(tmp);
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
803 oscar_string_append(str, newline, _("Buddy Comment"), tmp2);
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
804 g_free(tmp2);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
805 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
806 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
807
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
808 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
809 tmp = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
810 oscar_string_append(str, newline, _("Available"), tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
811 g_free(tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
812 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
813 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
814
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
815 static char *extract_name(const char *name) {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
816 char *tmp, *x;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
817 int i, j;
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
818
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
819 if (!name)
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
820 return NULL;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
821
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
822 x = strchr(name, '-');
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
823
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
824 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
825 x = strchr(++x, '-');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
826 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
827 tmp = g_strdup(++x);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
828
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
829 for (i = 0, j = 0; x[i]; i++) {
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
830 char hex[3];
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
831 if (x[i] != '%') {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
832 tmp[j++] = x[i];
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
833 continue;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
834 }
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
835 strncpy(hex, x + ++i, 2); hex[2] = 0;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
836 i++;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
837 tmp[j++] = strtol(hex, NULL, 16);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
838 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
839
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
840 tmp[j] = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
841 return tmp;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
842 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
843
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
844 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
845 find_oscar_chat(GaimConnection *gc, int id)
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 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
848 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
849 struct chat_connection *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 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
852 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
853 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
854 if (cc->id == id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
855 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
856 }
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 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
859 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
860
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
861 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
862 find_oscar_chat_by_conn(GaimConnection *gc, aim_conn_t *conn)
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 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
865 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
866 struct chat_connection *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 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
869 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
870 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
871 if (cc->conn == conn)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
872 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
873 }
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 return NULL;
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
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
878 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
879 find_oscar_chat_by_conv(GaimConnection *gc, GaimConversation *conv)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
880 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
881 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
882 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
883 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
884
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
885 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
886 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
887 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
888 if (cc->conv == conv)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
889 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
890 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
891
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
892 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
893 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
894
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
895 static void
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
896 oscar_chat_kill(GaimConnection *gc, struct chat_connection *cc)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
897 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
898 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
899
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
900 /* Notify the conversation window that we've left the chat */
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
901 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
902
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
903 /* Destroy the chat_connection */
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
904 od->oscar_chats = g_slist_remove(od->oscar_chats, cc);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
905 if (cc->inpa > 0)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
906 gaim_input_remove(cc->inpa);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
907 aim_conn_kill(od->sess, &cc->conn);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
908 g_free(cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
909 g_free(cc->show);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
910 g_free(cc);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
911 }
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
912
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
913 /*****************************************************************************
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
914 * Begin scary direct im stuff
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
915 *****************************************************************************/
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
916
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
917 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
918 GSList *d = od->direct_ims;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
919 struct oscar_direct_im *m = NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
920
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
921 while (d) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
922 m = (struct oscar_direct_im *)d->data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
923 if (!aim_sncmp(who, m->name))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
924 return m;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
925 d = d->next;
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
928 return NULL;
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
931 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
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 "destroying Direct IM for %s.\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 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
937 if (dim->gpc_pend) {
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
938 dim->killme = TRUE;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
939 return;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
940 }
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
941 if (dim->watcher)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
942 gaim_input_remove(dim->watcher);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
943 if (dim->conn) {
10271
361c9170d8af [gaim-migrate @ 11420]
Mark Doliner <mark@kingant.net>
parents: 10267
diff changeset
944 aim_conn_close(dim->conn);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
945 aim_conn_kill(od->sess, &dim->conn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
946 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
947 g_free(dim);
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 /* 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
951 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
952 {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
953 GaimConversation *conv;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
954 char buf[256];
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
955
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
956 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
957 "%s disconnected Direct IM.\n", dim->name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
958
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
959 if (dim->connected)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
960 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
961 else
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
962 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
963
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
964 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, dim->name,
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
965 gaim_connection_get_account(dim->gc));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
966
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
967 if (conv) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
968 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
969 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
970 gaim_notify_error(dim->gc, NULL, _("Direct Connect failed"), buf);
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
973 oscar_direct_im_destroy(od, dim);
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 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
976 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
977
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
978 /* 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
979 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
980 {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
981 GaimConnection *gc = sess->aux_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
982 OscarData *od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
983 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
984 char *sn;
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 sn = g_strdup(aim_odc_getsn(conn));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
987 dim = oscar_direct_im_find(od, sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
988 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
989 g_free(sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
990 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
991
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
992 static void destroy_direct_im_request(struct ask_direct *d) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
993 gaim_debug_info("oscar", "Freeing DirectIM prompts.\n");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
994
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
995 g_free(d->sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
996 g_free(d);
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 /* 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
1000 static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1001 struct oscar_direct_im *dim = data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1002 GaimConnection *gc = dim->gc;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1003 OscarData *od = gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1004 GaimConversation *conv;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1005 char buf[256];
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1006 struct sockaddr name;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1007 socklen_t name_len = 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1008
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1009 g_return_if_fail(gc != NULL);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1010
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1011 dim->gpc_pend = FALSE;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1012 if (dim->killme) {
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1013 oscar_direct_im_destroy(od, dim);
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1014 return;
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1015 }
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1016
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1017 if (!g_list_find(gaim_connections_get_all(), gc)) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1018 oscar_direct_im_destroy(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1019 return;
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1022 if (source < 0) {
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1023 if (dim->donttryagain) {
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1024 oscar_direct_im_disconnect(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1025 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1026 } else {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1027 guchar cookie[8];
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1028 char *who = g_strdup(dim->name);
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1029 const guchar *tmp = aim_odc_getcookie(dim->conn);
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1030
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1031 memcpy(cookie, tmp, 8);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1032 oscar_direct_im_destroy(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1033 oscar_direct_im_initiate(gc, who, cookie);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1034 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
1035 g_free(who);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1036 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1037 }
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1038 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1039
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1040 dim->conn->fd = source;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1041 aim_conn_completeconnect(od->sess, dim->conn);
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
1042 conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, dim->name);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1043
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1044 /* 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
1045 /* Is this really needed? */
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1046 if (getpeername(source, &name, &name_len) == 0) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1047 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
1048 dim->connected = TRUE;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1049 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
1050 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
1051 } else {
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1052 if (dim->donttryagain) {
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1053 oscar_direct_im_disconnect(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1054 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1055 } else {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1056 guchar cookie[8];
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1057 char *who = g_strdup(dim->name);
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1058 const guchar *tmp = aim_odc_getcookie(dim->conn);
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1059
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1060 memcpy(cookie, tmp, 8);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1061 oscar_direct_im_destroy(od, dim);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1062 oscar_direct_im_initiate(gc, who, cookie);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1063 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
1064 g_free(who);
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1065 return;
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1066 }
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1067 }
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1068
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1069
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1070 }
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 static void accept_direct_im_request(struct ask_direct *d) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1073 GaimConnection *gc = d->gc;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1074 OscarData *od;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1075 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1076 char *host; int port = 5190;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1077 int i, rc;
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1078 char *tmp;
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1079 GaimConversation *conv;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1080
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1081 if (!g_list_find(gaim_connections_get_all(), gc)) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1082 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1083 return;
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1086 od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1087 gaim_debug_info("oscar", "Accepted DirectIM.\n");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1088
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1089 dim = oscar_direct_im_find(od, d->sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1090 if (dim && dim->connected) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1091 destroy_direct_im_request(d); /* 40 */ /* what does that 40 mean? */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1092 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
1093 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1094 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1095 dim = g_new0(struct oscar_direct_im, 1);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1096 dim->gc = d->gc;
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1097 dim->donttryagain = d->donttryagain;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1098 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1099
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1100 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
1101 od->direct_ims = g_slist_append(od->direct_ims, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1102 if (!dim->conn) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1103 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1104 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1105 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1106 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1107
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1108 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
1109 gaim_odc_incoming, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1110 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
1111 gaim_odc_typing, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1112 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
1113 gaim_odc_update_ui, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1114
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1115 gaim_debug_info("oscar", "ip is %s.\n", d->ip);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1116 for (i = 0; i < (int)strlen(d->ip); i++) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1117 if (d->ip[i] == ':') {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1118 port = atoi(&(d->ip[i+1]));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1119 break;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1120 }
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 host = g_strndup(d->ip, i);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1123 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1124 dim->gpc_pend = TRUE;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1125 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
1126
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
1127 conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, d->sn);
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1128 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
1129 port);
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1130 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1131 g_free(tmp);
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1132
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1133 g_free(host);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1134 if (rc < 0) {
8978
8e69a730885c [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1135 dim->gpc_pend = FALSE;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1136 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1137 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1138 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1139 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1140
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1141 destroy_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1142
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1143 return;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1144 }
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 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1147 * 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
1148 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1149 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
1150 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1151 OscarData *od = (OscarData *)gc->proto_data;
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
1152 GaimConversation *conv;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1153 struct oscar_direct_im *dim;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1154 char buf[256];
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1155 char *sn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1156 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1157 aim_conn_t *newconn, *listenerconn;
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 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1160 newconn = va_arg(ap, aim_conn_t *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1161 listenerconn = va_arg(ap, aim_conn_t *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1162 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1163
10271
361c9170d8af [gaim-migrate @ 11420]
Mark Doliner <mark@kingant.net>
parents: 10267
diff changeset
1164 aim_conn_close(listenerconn);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1165 aim_conn_kill(sess, &listenerconn);
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 sn = g_strdup(aim_odc_getsn(newconn));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1168
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1169 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1170 "DirectIM: initiate success to %s\n", sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1171 dim = oscar_direct_im_find(od, sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1172
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
1173 conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, sn);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1174 gaim_input_remove(dim->watcher);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1175 dim->conn = newconn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1176 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
1177 dim->connected = TRUE;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1178 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1179 g_free(sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1180 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1181
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1182 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
1183 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
1184 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
1185
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 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1188
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1189 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1190 * 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
1191 * 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
1192 * nasty, you sicko.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1193 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1194 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
1195 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1196 char *sn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1197 double percent;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1198 GaimConnection *gc = sess->aux_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1199 OscarData *od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1200 struct oscar_direct_im *dim;
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 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1203 sn = va_arg(ap, char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1204 percent = va_arg(ap, double);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1205 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1206
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1207 if (!sn || !(dim = oscar_direct_im_find(od, sn)))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1208 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1209 if (dim->watcher) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1210 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1211 /* 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
1212 dim->watcher = 0;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1213 }
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 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1216 oscar_callback, dim->conn);
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 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1219 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1220
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1221 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1222 * 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
1223 * 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
1224 * data chunks (images) appended to it.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1225 *
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1226 * 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
1227 * 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
1228 * 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
1229 * 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
1230 * 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
1231 * create the img store using the given data.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1232 *
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1233 * For somewhat easy reference, here's a sample message
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1234 * (without the whitespace and asterisks):
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1235 *
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1236 * <HTML><BODY BGCOLOR="#ffffff">
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1237 * <FONT LANG="0">
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1238 * This is a really stupid picture:<BR>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1239 * <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
1240 * Yeah it is<BR>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1241 * Here is another one:<BR>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1242 * <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
1243 * </FONT>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1244 * </BODY></HTML>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1245 * <BINARY>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1246 * <DATA ID="1" SIZE="9894">datadatadatadata</DATA>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1247 * <DATA ID="2" SIZE="65978">datadatadatadata</DATA>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1248 * </BINARY>
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1249 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1250 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
1251 GaimConnection *gc = sess->aux_data;
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
1252 GaimMessageFlags imflags = 0;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1253 gchar *utf8;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1254 GString *newmsg = g_string_new("");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1255 GSList *images = NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1256 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1257 const char *sn, *msg, *msgend, *binary;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1258 size_t len;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1259 int encoding, isawaymsg;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1260
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1261 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1262 sn = va_arg(ap, const char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1263 msg = va_arg(ap, const char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1264 len = va_arg(ap, size_t);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1265 encoding = va_arg(ap, int);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1266 isawaymsg = va_arg(ap, int);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1267 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1268 msgend = msg + len;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1269
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1270 gaim_debug_info("oscar",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1271 "Got DirectIM message from %s\n", sn);
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 if (isawaymsg)
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
1274 imflags |= GAIM_MESSAGE_AUTO_RESP;
8971
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 /* message has a binary trailer */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1277 if ((binary = gaim_strcasestr(msg, "<binary>"))) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1278 GData *attribs;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1279 const char *tmp, *start, *end, *last = NULL;
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 tmp = msg;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1282
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1283 /* for each valid image tag... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1284 while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1285 const char *id, *src, *datasize;
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1286 const char *data = NULL;
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1287 char *tag = NULL;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1288 size_t size;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1289 int imgid = 0;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1290
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1291 /* update the location of the last img tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1292 last = end;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1293
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1294 /* grab attributes */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1295 id = g_datalist_get_data(&attribs, "id");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1296 src = g_datalist_get_data(&attribs, "src");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1297 datasize = g_datalist_get_data(&attribs, "datasize");
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 id & datasize, build the data tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1300 if (id && datasize)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1301 tag = g_strdup_printf("<data id=\"%s\" size=\"%s\">", id, datasize);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1302
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1303 /* if we have a tag, find the start of the data */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1304 if (tag && (data = gaim_strcasestr(binary, tag)))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1305 data += strlen(tag);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1306
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1307 g_free(tag);
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10498
diff changeset
1308
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1309 /* check the data is here and store it */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1310 if (data + (size = atoi(datasize)) <= msgend)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1311 imgid = gaim_imgstore_add(data, size, src);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1312
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1313 /*
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1314 * 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
1315 * The hardcoded "us-ascii" value REALLY needs to be removed.
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1316 */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1317 /* if we have a stored image... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1318 if (imgid) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1319 /* append the message up to the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1320 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, start - tmp);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1321 if (utf8 != NULL) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1322 newmsg = g_string_append(newmsg, utf8);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1323 g_free(utf8);
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1326 /* write the new image tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1327 g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid);
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 /* and record the image number */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1330 images = g_slist_append(images, GINT_TO_POINTER(imgid));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1331 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1332 /* otherwise, copy up to the end of the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1333 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, (end + 1) - tmp);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1334 if (utf8 != NULL) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1335 newmsg = g_string_append(newmsg, utf8);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1336 g_free(utf8);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1337 }
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1340 /* clear the attribute list */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1341 g_datalist_clear(&attribs);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1342
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1343 /* continue from the end of the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1344 tmp = end + 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1345 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1346
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1347 /* append any remaining message data (without the > :-) */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1348 if (last++ && (last < binary))
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1349 newmsg = g_string_append_len(newmsg, last, binary - last);
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 /* set the flag if we caught any images */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1352 if (images)
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
1353 imflags |= GAIM_MESSAGE_IMAGES;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1354 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1355 g_string_append_len(newmsg, msg, len);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1356 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1357
10318
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1358 /* Convert to UTF8 */
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1359 /* (This hasn't been tested very much) */
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1360 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
1361 if (utf8 != NULL) {
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1362 serv_got_im(gc, sn, utf8, imflags, time(NULL));
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1363 g_free(utf8);
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1364 }
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1365
fcadde998ba9 [gaim-migrate @ 11520]
Mark Doliner <mark@kingant.net>
parents: 10271
diff changeset
1366 /* free the message */
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1367 g_string_free(newmsg, TRUE);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1368
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1369 /* unref any images we allocated */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1370 if (images) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1371 GSList *tmp;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1372 int id;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1373
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1374 for (tmp = images; tmp != NULL; tmp = tmp->next) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1375 id = GPOINTER_TO_INT(tmp->data);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1376 gaim_imgstore_unref(id);
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1379 g_slist_free(images);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1380 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1381
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1382 return 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1383 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1384
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1385 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
1386 va_list ap;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1387 char *sn;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1388 int typing;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1389 GaimConnection *gc = sess->aux_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1390
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1391 va_start(ap, fr);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1392 sn = va_arg(ap, char *);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1393 typing = va_arg(ap, int);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1394 va_end(ap);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1395
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1396 if (typing == 0x0002) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1397 /* 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
1398 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1399 "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
1400 serv_got_typing(gc, sn, 0, GAIM_TYPING);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1401 } else if (typing == 0x0001)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1402 serv_got_typing(gc, sn, 0, GAIM_TYPED);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1403 else
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1404 serv_got_typing_stopped(gc, sn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1405 return 1;
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
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
1408 static int gaim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *message, GaimMessageFlags imflags) {
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1409 char *buf;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1410 size_t len;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1411 int ret;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1412 GString *msg = g_string_new("<HTML><BODY>");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1413 GString *data = g_string_new("</BODY></HTML><BINARY>");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1414 GData *attribs;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1415 const char *start, *end, *last;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1416 int oscar_id = 0;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1417
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1418 last = message;
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 /* for each valid IMG tag... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1421 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
1422 GaimStoredImage *image = NULL;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1423 const char *id;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1424
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1425 if (start - last) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1426 g_string_append_len(msg, last, start - last);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1427 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1428
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1429 id = g_datalist_get_data(&attribs, "id");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1430
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1431 /* ... if it refers to a valid gaim image ... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1432 if (id && (image = gaim_imgstore_get(atoi(id)))) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1433 /* ... append the message from start to the tag ... */
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1434 unsigned long size = gaim_imgstore_get_size(image);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1435 const char *filename = gaim_imgstore_get_filename(image);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1436 gpointer imgdata = gaim_imgstore_get_data(image);
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 oscar_id++;
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 /* ... insert a new img tag with the oscar id ... */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1441 if (filename)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1442 g_string_append_printf(msg,
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1443 "<IMG SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1444 filename, oscar_id, size);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1445 else
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1446 g_string_append_printf(msg,
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1447 "<IMG ID=\"%d\" DATASIZE=\"%lu\">",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1448 oscar_id, size);
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 /* ... and append the data to the binary section ... */
9126
cefe59828f90 [gaim-migrate @ 9903]
Mark Doliner <mark@kingant.net>
parents: 9070
diff changeset
1451 g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">",
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1452 oscar_id, size);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1453 data = g_string_append_len(data, imgdata, size);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1454 data = g_string_append(data, "</DATA>");
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 /* If the tag is invalid, skip it, thus no else here */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1457
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1458 g_datalist_clear(&attribs);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1459
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1460 /* continue from the end of the tag */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1461 last = end + 1;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1462 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1463
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1464 /* append any remaining message data (without the > :-) */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1465 if (last && *last)
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1466 msg = g_string_append(msg, last);
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 /* if we inserted any images in the binary section, append it */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1469 if (oscar_id) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1470 msg = g_string_append_len(msg, data->str, data->len);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1471 msg = g_string_append(msg, "</BINARY>");
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
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1474 len = msg->len;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1475 buf = msg->str;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1476 g_string_free(msg, FALSE);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1477 g_string_free(data, TRUE);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1478
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1479
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1480 /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
1481 if (imflags & GAIM_MESSAGE_AUTO_RESP)
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1482 ret = aim_odc_send_im(sess, conn, buf, len, 0, 1);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1483 else
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1484 ret = aim_odc_send_im(sess, conn, buf, len, 0, 0);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1485
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1486 g_free(buf);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1487
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1488 return ret;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1489 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1490
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1491 struct ask_do_dir_im {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1492 char *who;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1493 GaimConnection *gc;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1494 };
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1495
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1496 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
1497 g_free(data->who);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1498 g_free(data);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1499 }
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 /* 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
1502 * 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
1503 * 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
1504 * connect to them, and so we do that.
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1505 *
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1506 * 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
1507 * 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
1508 *
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1509 * 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
1510 */
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1511 static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const guchar *cookie) {
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1512 OscarData *od;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1513 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1514 int listenfd;
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1515 const char *ip;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1516
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1517 od = (OscarData *)gc->proto_data;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1518
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1519 dim = oscar_direct_im_find(od, who);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1520 if (dim) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1521 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
1522 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1523 gaim_debug_info("oscar",
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1524 "Gave up on old direct IM, trying again\n");
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1525 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1526 gaim_notify_error(gc, NULL, "DirectIM already open.", NULL);
8980
382bbf503c3d [gaim-migrate @ 9755]
Tim Ringenbach <marv@pidgin.im>
parents: 8978
diff changeset
1527 return;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1528 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1529 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1530 dim = g_new0(struct oscar_direct_im, 1);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1531 dim->gc = gc;
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1532 g_snprintf(dim->name, sizeof dim->name, "%s", who);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1533
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1534 listenfd = gaim_network_listen_range(5190, 5199);
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1535 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
1536 if (listenfd >= 0)
5b4b3fb286b0 [gaim-migrate @ 10279]
Tim Ringenbach <marv@pidgin.im>
parents: 9407
diff changeset
1537 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
1538 if (dim->conn != NULL) {
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1539 char *tmp;
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1540 GaimConversation *conv;
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1541
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1542 od->direct_ims = g_slist_append(od->direct_ims, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1543 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1544 oscar_callback, dim->conn);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1545 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
1546 gaim_odc_initiate, 0);
8982
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1547
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
1548 conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, who);
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1549 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
1550 gaim_network_get_port_from_fd(listenfd));
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1551 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
a4fd6666bb83 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1552 g_free(tmp);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1553 } else {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1554 gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1555 oscar_direct_im_destroy(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1556 }
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1557 }
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1558
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1559 static void oscar_direct_im(struct ask_do_dir_im *data) {
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1560 GaimConnection *gc = data->gc;
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1561
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1562 if (!g_list_find(gaim_connections_get_all(), gc)) {
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1563 g_free(data->who);
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1564 g_free(data);
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1565 return;
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1566 }
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1567
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1568 oscar_direct_im_initiate(gc, data->who, NULL);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1569 g_free(data->who);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1570 g_free(data);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1571 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1572
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1573 /* this is the right click menu cb thingy */
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1574 static void oscar_ask_direct_im(GaimBlistNode *node, gpointer ignored) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1575
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1576 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1577 GaimConnection *gc;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1578 gchar *buf;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1579 struct ask_do_dir_im *data;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1580
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1581 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1582
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1583 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1584 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1585
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1586 data = g_new0(struct ask_do_dir_im, 1);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1587 data->who = g_strdup(buddy->name);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1588 data->gc = gc;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1589 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
1590 buddy->name);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1591
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1592 gaim_request_action(gc, NULL, buf,
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1593 _("Because this reveals your IP address, it "
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
1594 "may be considered a privacy risk. Do you "
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1595 "wish to continue?"),
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1596 0, data, 2,
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1597 _("Connect"), G_CALLBACK(oscar_direct_im),
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
1598 _("Cancel"), G_CALLBACK(oscar_cancel_direct_im));
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1599 g_free(buf);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1600 }
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1601
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1602 /*****************************************************************************
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1603 * End scary direct im stuff
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
1604 *****************************************************************************/
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1605
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1606 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1607 aim_conn_t *conn = (aim_conn_t *)data;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1608 aim_session_t *sess = aim_conn_getsess(conn);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1609 GaimConnection *gc = sess ? sess->aux_data : NULL;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1610 OscarData *od;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1611
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1612 if (!gc) {
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 "oscar callback for closed connection (1).\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1615 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1616 }
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1617
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1618 if( !(od = (OscarData *)gc->proto_data) ) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1619 gaim_debug_warning("oscar","NULL od in oscar_callback; conn closed?\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1620 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1621 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1622
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1623 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1624 /* oh boy. this is probably bad. i guess the only thing we
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1625 * can really do is return? */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1626 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1627 "oscar callback for closed connection (2).\n");
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1628 gaim_debug_misc("oscar", "gc = %p\n", gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1629 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1630 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1631
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1632 if (condition & GAIM_INPUT_READ) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1633 if (conn->type == AIM_CONN_TYPE_LISTENER) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1634 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1635 "got information on rendezvous listener\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1636 if (aim_handlerendconnect(od->sess, conn) < 0) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1637 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1638 "connection error (rendezvous listener)\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1639 aim_conn_kill(od->sess, &conn);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1640 /* AAA - Don't we need to gaim_xfer_cancel here? --marv */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1641 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1642 } else {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1643 if (aim_get_command(od->sess, conn) >= 0) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1644 aim_rxdispatch(od->sess);
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1645 if (od->killme) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1646 gaim_debug_error("oscar", "Waiting to be destroyed\n");
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1647 return;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1648 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1649 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1650 if ((conn->type == AIM_CONN_TYPE_BOS) ||
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1651 !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS)))
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1652 {
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
1653 gaim_debug_error("oscar", "Major connection error. i.e. "
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
1654 "invalid data was received on the oscar TCP stream\n");
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1655 gaim_connection_error(gc, _("Disconnected."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1656 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1657 struct chat_connection *cc = find_oscar_chat_by_conn(gc, conn);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1658 GaimConversation *conv = gaim_find_chat(gc, cc->id);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1659 char *buf;
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1660 gaim_debug_info("oscar", "Lost connection "
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1661 "to chat room %s\n", cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1662
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1663 buf = g_strdup_printf(_("You have lost your connection "
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1664 "to chat room %s."), cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1665 if (conv != NULL)
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
1666 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL));
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
1667 else
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
1668 gaim_notify_error(gc, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1669 g_free(buf);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1670
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
1671 oscar_chat_kill(gc, cc);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1672
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1673 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1674 if (od->cnpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1675 gaim_input_remove(od->cnpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1676 od->cnpa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1677 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1678 "removing chatnav input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1679 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1680 struct create_room *cr = od->create_rooms->data;
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1681 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1682 od->create_rooms =
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1683 g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1684 g_free(cr);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1685 gaim_notify_error(gc, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1686 _("Chat is currently unavailable"),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1687 NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1688 }
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1689 gaim_debug_info("oscar","killing rendezvous connection\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
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_AUTH) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1692 if (od->paspa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1693 gaim_input_remove(od->paspa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1694 od->paspa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1695 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1696 "removing authconn input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1697 aim_conn_kill(od->sess, &conn);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1698 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1699 if (od->emlpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1700 gaim_input_remove(od->emlpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1701 od->emlpa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1702 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1703 "removing email input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1704 aim_conn_kill(od->sess, &conn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1705 } else if (conn->type == AIM_CONN_TYPE_ICON) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1706 if (od->icopa > 0)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1707 gaim_input_remove(od->icopa);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1708 od->icopa = 0;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1709 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1710 "removing icon input watcher\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1711 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1712 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1713 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1714 gaim_odc_disconnect(od->sess, conn);
11214
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
1715 gaim_debug_info("oscar","killing rendezvous connection\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1716 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1717 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1718 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1719 "holy crap! generic connection error! %hu\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1720 conn->type);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1721 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1722 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1723 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1724 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1725 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1726 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1727
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1728 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1729 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1730 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1731 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1732 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1733 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1734
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1735 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1736 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1737 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1738 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1739
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1740 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1741 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1742 conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1743 conn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1744
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1745 if (source < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1746 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1747 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1748 }
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 aim_conn_completeconnect(sess, conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1751 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
1752 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
1753
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1754 gaim_debug_info("oscar",
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1755 "Screen name sent, waiting for response\n");
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1756 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
1757 ck[1] = 0x65;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1758 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1759
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1760 static void
11837
fa742ad8068c [gaim-migrate @ 14128]
Mark Doliner <mark@kingant.net>
parents: 11820
diff changeset
1761 oscar_login(GaimAccount *account)
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1762 {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1763 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1764 aim_conn_t *conn;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1765 GaimConnection *gc = gaim_account_get_connection(account);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1766 OscarData *od = gc->proto_data = g_new0(OscarData, 1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1767
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1768 gaim_debug_misc("oscar", "oscar_login: gc = %p\n", gc);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
1769
8437
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1770 if (!aim_snvalid(gaim_account_get_username(account))) {
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1771 gchar *buf;
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
1772 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
1773 gaim_connection_error(gc, buf);
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1774 g_free(buf);
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1775 }
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1776
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
1777 if (aim_sn_is_icq((gaim_account_get_username(account)))) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1778 od->icq = TRUE;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
1779 } else {
6622
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
1780 gc->flags |= GAIM_CONNECTION_HTML;
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
1781 gc->flags |= GAIM_CONNECTION_AUTO_RESP;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
1782 }
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1783 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
1784
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1785 sess = g_new0(aim_session_t, 1);
11253
7d31d61e6438 [gaim-migrate @ 13422]
Mark Doliner <mark@kingant.net>
parents: 11251
diff changeset
1786 aim_session_init(sess, TRUE);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1787 /*
11837
fa742ad8068c [gaim-migrate @ 14128]
Mark Doliner <mark@kingant.net>
parents: 11820
diff changeset
1788 * We need an immediate queue because we don't use a while-loop
7282
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
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
1798 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH);
2086
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;
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
1811 if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", OSCAR_DEFAULT_LOGIN_SERVER),
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
1812 gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT),
5575
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);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
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.
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1945 *
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1946 * Update August 2005:
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1947 * The series of events for transfers has been seriously complicated by the addition
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1948 * of transfer redirects and proxied connections. I could throw a whole lot of words
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1949 * at trying to explain things here, but it probably wouldn't do much good. To get
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1950 * a better idea of what happens, take a look at the diagrams and documentation
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1951 * from my Summer of Code project. -- Jonathan Clark
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1952 */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1953 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1954 static void oscar_xfer_proxylogin(gpointer data, gint source, GaimInputCondition condition);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1955 static void oscar_send_file_request(GaimXfer *xfer);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1956
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1957 /*
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1958 * Miscellaneous xfer functions
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1959 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1960 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
1961 {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1962 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1963 struct aim_oft_info *oft_info;
4656
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 while (fts) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1966 xfer = fts->data;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1967 oft_info = xfer->data;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1968
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1969 if (oft_info && !memcmp(ck, oft_info->cookie, 8))
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1970 return xfer;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1971
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1972 fts = g_slist_next(fts);
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
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1975 return NULL;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1976 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1977
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1978 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
1979 {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1980 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1981 struct aim_oft_info *oft_info;
4656
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 while (fts) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1984 xfer = fts->data;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1985 oft_info = xfer->data;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1986
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1987 if (oft_info && (conn == oft_info->conn))
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1988 return xfer;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1989
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1990 fts = g_slist_next(fts);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1991 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1992
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1993 return NULL;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1994 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1995
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1996 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1997 * We're done sending/receiving raw data through the connection.
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1998 * If we're the receiver, send an OFT header with the bytes received
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1999 * filled in to indicate this party's over.
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2000 */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2001 static void oscar_xfer_end(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2002 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2003 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2004 GaimConnection *gc = oft_info->sess->aux_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2005 OscarData *od = gc->proto_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2006
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2007 gaim_debug_info("oscar", "AAA - in oscar_xfer_end\n");
8446
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 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2010 oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2011 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
2012 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2013
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2014 aim_conn_kill(oft_info->sess, &oft_info->conn);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2015 aim_oft_destroyinfo(oft_info);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2016 xfer->data = NULL;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2017 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2018 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2019
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2020 /*
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2021 * xfer functions used when receiving files
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2022 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2023
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2024 /*
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2025 * This is a gaim timeout callback called X milliseconds after a connection is attempted
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2026 * By this point, we've lost faith in the connection method we just tried and want to
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2027 * try something new. Hopefully, that new connection method will be more successful,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2028 * otherwise, we'll end up here again and again until the connection is successful
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2029 * or we've tried every method... if that happens we just throw our hands up
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2030 * and inform the user of his bad karma.
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2031 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2032 static gboolean oscar_xfer_ip_timeout(gpointer data) {
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2033 GaimXfer *xfer;
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2034 struct aim_oft_info *oft_info;
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2035 char *msg = NULL;
11214
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
2036
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2037 gaim_debug_info("oscar","AAA - in oscar_xfer_ip_timeout\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2038
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2039 xfer = (GaimXfer*) data;
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2040 if(xfer->data) {
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2041 oft_info = (struct aim_oft_info*) xfer->data;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2042
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2043 /* Check to see if the clientip has produced any results */
11214
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
2044 if(!oft_info->success) {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2045 /* This connection has worn out its welcome. Goodbye. */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2046 if(oft_info->conn) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2047 close(oft_info->conn->fd);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2048 aim_conn_kill(oft_info->sess, &oft_info->conn);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2049 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2050
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2051 if(oft_info->method == AIM_XFER_DIRECT || oft_info->method == AIM_XFER_REDIR) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2052 /* If (we're currently using the verified ip)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2053 * In case clientip & verifiedip are the same,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2054 * we must prevent an infinite loop */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2055 if(xfer->remote_ip && oft_info->verifiedip
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2056 && g_ascii_strcasecmp(xfer->remote_ip, oft_info->verifiedip) == 0
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2057 && g_ascii_strcasecmp(oft_info->clientip, oft_info->verifiedip) != 0 )
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2058 {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2059 /* The verifiedip timed out */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2060 if(oft_info->method == AIM_XFER_DIRECT) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2061 /* clientip & verifiedip failed, request a redirect
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2062 * that is, we want the sender to connect to us */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2063
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2064 /* Let the user not to lose hope quite yet*/
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2065 msg = g_strdup_printf(_("Attempting connection redirect..."));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2066 gaim_xfer_conversation_write(xfer, msg, FALSE);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2067 g_free(msg);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2068
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2069 gaim_timeout_add(FT_REDIR_TIMEOUT,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2070 oscar_xfer_ip_timeout, xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2071 oft_info->method = AIM_XFER_REDIR;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2072 g_free(oft_info->proxyip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2073 oft_info->proxyip = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2074 oft_info->clientip = g_strdup( gaim_network_get_my_ip(
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2075 oft_info->conn ? oft_info->conn->fd : -1));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2076 oscar_xfer_init_send(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2077 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2078 /* clientip, verifiedip, and redirect all failed. */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2079 gaim_debug_info("oscar",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2080 "redirect timed out. requesting stg3 proxy\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2081
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2082 /* Kill our listener */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2083 gaim_input_remove(xfer->watcher);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2084 aim_conn_kill(oft_info->sess, &oft_info->conn);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2085
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2086 /* Instead of failing here, request a stage 3 proxy */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2087 g_free(oft_info->clientip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2088 g_free(oft_info->verifiedip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2089 oft_info->clientip = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2090 oft_info->verifiedip = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2091 oft_info->port = 0;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2092 oft_info->conn->type = AIM_CONN_TYPE_RENDEZVOUS;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2093 oft_info->method = AIM_XFER_PROXY;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2094 oft_info->stage = AIM_XFER_PROXY_STG3;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2095
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2096 aim_im_sendch2_sendfile_ask(oft_info->sess, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2097 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2098 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2099 /* clientip timed out, now try verifiedip */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2100 g_free(xfer->remote_ip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2101 xfer->remote_ip = g_strdup(oft_info->verifiedip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2102 gaim_debug_info("oscar","attempting connection using verifiedip\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2103 oscar_xfer_init_recv(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2104 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2105 } else if(oft_info->method == AIM_XFER_PROXY) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2106 /* proxyip timed out
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2107 * Yes, it's a bit odd to ask the user to enable proxied file transfers
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2108 * when it's a proxied transfer that timed out. It is possible that a
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2109 * stage 1/2 proxied transfer might work when a stage 3 will not. */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2110 msg = g_strdup_printf(_("Transfer of file %s timed out.\n Try enabling proxy servers for file transfers in Tools->Preferences->AIM/ICQ."),
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2111 gaim_xfer_get_filename(xfer));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2112 gaim_xfer_conversation_write(xfer, msg, TRUE);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2113 g_free(msg);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2114 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2115 if(oft_info->xfer_reffed) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2116 oft_info->xfer_reffed = FALSE;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2117 gaim_xfer_unref(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2118 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2119 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2120 gaim_debug_warning("oscar","unknown xfer method encountered in timout\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2121 }
11214
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
2122 } else {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2123 if(oft_info->xfer_reffed) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2124 oft_info->xfer_reffed = FALSE;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2125 gaim_xfer_unref(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2126 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2127 gaim_debug_info("oscar","connection successful; timeout off\n");
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2128 }
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2129 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2130 gaim_debug_info("oscar","transfer already done; nothing to do\n");
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2131 }
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2132 return FALSE;
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2133 }
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2134
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2135 /*
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2136 * Connect to another client or a file transfer proxy server.
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2137 * Though this function has traditionally only been used during file receives,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2138 * it is now called to make any sort of file transfer connection via gaim_proxy_connect.
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2139 */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2140 static void oscar_xfer_init_recv(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2141 {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2142 struct aim_oft_info *oft_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2143 struct aim_rv_proxy_info *proxy_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2144 GaimConnection *gc;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2145 OscarData *od;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2146 GaimInputFunction nextstop_cb;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2147 int rc;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2148
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2149 g_return_if_fail(xfer != NULL);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2150 g_return_if_fail(xfer->data != NULL);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2151
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2152 oft_info = xfer->data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2153 proxy_info = oft_info->proxy_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2154 gc = oft_info->sess->aux_data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2155 od = gc->proto_data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2156
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2157 gaim_debug_info("oscar", "AAA - in oscar_xfer_init_recv\n");
11214
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
2158
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2159 /* Start a timer for this ip address
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2160 * If the clientip fails, try the verifiedip
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2161 * If that fails, wait for the transfer to redirect
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2162 * This xfer reference will be released in oscar_xfer_ip_timeout */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2163 if(!oft_info->xfer_reffed) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2164 oft_info->xfer_reffed = TRUE;
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2165 gaim_xfer_ref(xfer);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2166 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2167
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2168 if(oft_info->method != AIM_XFER_PROXY) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2169 /* If (we're currently using the verified ip)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2170 * In case clientip & verifiedip are the same, we must prevent an infinite loop */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2171 if(xfer->remote_ip && oft_info->verifiedip
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2172 && g_ascii_strcasecmp(xfer->remote_ip, oft_info->verifiedip) == 0
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2173 && g_ascii_strcasecmp(oft_info->clientip, oft_info->verifiedip) != 0 ) {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2174 gaim_timeout_add(FT_VERIFIEDIP_TIMEOUT, oscar_xfer_ip_timeout, xfer);
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2175 } else {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2176 gaim_timeout_add(FT_CLIENTIP_TIMEOUT, oscar_xfer_ip_timeout, xfer);
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
2177 }
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2178 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2179 gaim_timeout_add(FT_PROXYIP_TIMEOUT, oscar_xfer_ip_timeout, xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2180 }
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
2181 oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2182
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2183 /* If we're routing this transfer through a AOL proxy server, do the special login
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2184 * before telling the other client we're ready for action.
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2185 * Note, firststop_cb is the first function called after gaim has made a connection
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2186 * Also, the connection type is changed until the proxy login is complete */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2187 if(oft_info->method == AIM_XFER_PROXY) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2188 if(proxy_info)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2189 proxy_info->conn = oft_info->conn;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2190 else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2191 gaim_debug_warning("oscar","NULL proxy_info\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2192 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2193 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2194 nextstop_cb = oscar_xfer_proxylogin;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2195 oft_info->conn->type = AIM_CONN_TYPE_RENDEZVOUS_PROXY;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2196 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2197 nextstop_cb = oscar_sendfile_connected;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2198 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2199
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2200 if (oft_info->conn) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2201 oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2202 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2203 oscar_sendfile_prompt, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2204 rc = gaim_proxy_connect(gaim_connection_get_account(gc),
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2205 xfer->remote_ip, xfer->remote_port, nextstop_cb, xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2206 if (rc == -1) {
10654
f2e86683cafc [gaim-migrate @ 12182]
Mark Doliner <mark@kingant.net>
parents: 10653
diff changeset
2207 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
2208 _("Unable to establish file descriptor."));
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2209 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2210 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2211 } else {
10654
f2e86683cafc [gaim-migrate @ 12182]
Mark Doliner <mark@kingant.net>
parents: 10653
diff changeset
2212 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
2213 _("Unable to create new connection."));
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2214 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2215 /* 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
2216 }
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2217 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2218
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2219 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2220 * "Never mind. This transfer wasn't such a great idea after all."
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2221 */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2222 static void oscar_xfer_cancel_recv(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2223 {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2224 struct aim_oft_info *oft_info = xfer->data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2225 GaimConnection *gc = oft_info->sess->aux_data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2226 OscarData *od = gc->proto_data;
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2227
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2228 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
2229
9771
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2230 if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE)
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2231 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2232
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2233 aim_conn_kill(oft_info->sess, &oft_info->conn);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2234 aim_oft_destroyinfo(oft_info);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2235 xfer->data = NULL;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2236 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2237 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2238
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2239 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2240 * Called after every data packet we receive
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2241 */
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
2242 static void oscar_xfer_ack_recv(GaimXfer *xfer, const guchar *buffer, size_t size)
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2243 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2244 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2245
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2246 /* Update our rolling checksum. Like Walmart, yo. */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2247 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
2248 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2249
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2250 /*
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2251 * xfer functions used for proxied file transfers
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2252 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2253
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2254 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2255 * Called by oscar_send_proxylogin_cb when we receive a ready packet
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2256 * BBB
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2257 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2258 void oscar_xfer_proxylogin_ready(GaimXfer *xfer, gint fd) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2259 struct aim_oft_info *oft_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2260 struct aim_rv_proxy_info *proxy_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2261
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2262 gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin_ready\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2263 if (!(oft_info = xfer->data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2264 gaim_debug_warning("oscar","NULL oft_info; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2265 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2266 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2267 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2268 if (!(proxy_info = oft_info->proxy_info)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2269 gaim_debug_warning("oscar","NULL proxy_info; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2270 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2271 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2272 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2273
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2274 /* Remove the rv proxy watcher and put the connection type back the way we found it */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2275 gaim_input_remove(xfer->watcher);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2276 xfer->watcher = 0;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2277 oft_info->conn->type = AIM_CONN_TYPE_RENDEZVOUS;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2278
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2279 if(oft_info->send_or_recv == AIM_XFER_SEND) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2280
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2281 if(oft_info->stage == AIM_XFER_PROXY_STG2) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2282 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2283
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2284 /* For stage 2, both file headers are filled in */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2285 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2286 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2287
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2288 /* The following is taken from oscar_sendfile_estblsh */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2289 aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2290 oscar_sendfile_ack, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2291 aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2292 oscar_sendfile_done, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2293 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2294 oft_info->conn);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2295
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2296 /* Inform the other user that we are connected and ready to transfer */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2297 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_PROMPT, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2298 } else if(oft_info->send_or_recv == AIM_XFER_RECV) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2299 oscar_sendfile_connected(xfer, fd, GAIM_INPUT_READ);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2300 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2301 gaim_debug_warning("oscar","no value for send_or_recv; aborting transfer\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2302 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2303 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2304 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2305
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2306 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2307 * Called by oscar_sendfile_proxylogin_cb when we receive an ack packet in reply to an init_send
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2308 * BBB
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2309 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2310 void oscar_xfer_proxylogin_ack(GaimXfer *xfer) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2311 struct aim_oft_info *oft_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2312 struct aim_rv_proxy_info *proxy_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2313
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2314 gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin_ack\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2315 if (!(oft_info = xfer->data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2316 gaim_debug_warning("oscar","NULL oft_info; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2317 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2318 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2319 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2320 if (!(proxy_info = oft_info->proxy_info)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2321 gaim_debug_warning("oscar","NULL proxy_info; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2322 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2323 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2324 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2325
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2326 /* Use the proxy "port" we just ACK-quired (hah) so that the proxy will love us */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2327 oft_info->port = proxy_info->port;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2328 oft_info->proxyip = g_strdup(proxy_info->ip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2329 gaim_debug_info("oscar","received client ip and port: %s:%d\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2330 oft_info->proxyip, oft_info->port);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2331
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2332 if(oft_info->send_or_recv == AIM_XFER_SEND) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2333 oscar_send_file_request(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2334 } else if(oft_info->send_or_recv == AIM_XFER_RECV) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2335 strncpy(oft_info->fh.name, xfer->filename, 64);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2336 oft_info->fh.name[63] = '\0';
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2337 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2338 oft_info->fh.size = gaim_xfer_get_size(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2339
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2340 /* Calculating the checksum can take a very long time for large files */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2341 gaim_debug_info("oscar","calculating file checksum\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2342 oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2343 gaim_debug_info("oscar","checksum calculated\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2344
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2345 aim_im_sendch2_sendfile_ask(oft_info->sess, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2346 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2347 gaim_debug_warning("oscar","no value for send_or_recv; aborting transfer\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2348 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2349 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2350 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2351
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2352 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2353 * This is called whenever we receive data while negotiating a rendezvous proxy connection
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2354 * BBB
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2355 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2356 static void oscar_xfer_proxylogin_cb(gpointer data, gint source, GaimInputCondition condition) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2357 GaimXfer *xfer;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2358 struct aim_oft_info *oft_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2359
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2360 gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin_cb\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2361 if (!(xfer = data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2362 gaim_debug_warning("oscar","NULL xfer; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2363 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2364 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2365 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2366 if (!(oft_info = xfer->data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2367 gaim_debug_warning("oscar","NULL oft_info; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2368 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2369 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2370 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2371
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2372 if( (oft_info->proxy_info = aim_rv_proxy_read(oft_info->sess, oft_info->conn)) ) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2373
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2374 switch(oft_info->proxy_info->cmd_type) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2375 case AIM_RV_PROXY_READY:
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2376 oscar_xfer_proxylogin_ready(xfer, source);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2377 free(oft_info->proxy_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2378 oft_info->proxy_info = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2379 break;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2380 case AIM_RV_PROXY_ACK:
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2381 oscar_xfer_proxylogin_ack(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2382 free(oft_info->proxy_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2383 oft_info->proxy_info = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2384 break;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2385 case AIM_RV_PROXY_ERROR:
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2386 gaim_debug_info("oscar","error logging into rendezvous proxy; err code is %x\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2387 oft_info->proxy_info->err_code);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2388 gaim_input_remove(xfer->watcher);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2389 xfer->watcher = 0;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2390 free(oft_info->proxy_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2391 oft_info->proxy_info = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2392 gaim_xfer_cancel_remote(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2393 break;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2394 /* We should never get here */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2395 default:
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2396 gaim_debug_info("oscar","proxylogin switch defaulted unexpectedly\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2397 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2398 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2399 gaim_debug_info("oscar","could not read rv proxy packet\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2400 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2401 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2402
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2403 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2404 * Called to send necessary login data to a rendezvous proxy server once we're connected
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2405 * Takes xfer is data and fd as source
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2406 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2407 static void oscar_xfer_proxylogin(gpointer data, gint source, GaimInputCondition condition)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2408 {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2409 GaimXfer *xfer;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2410 struct aim_oft_info *oft_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2411 struct aim_rv_proxy_info *proxy_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2412 int err;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2413
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2414 gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2415 if (!(xfer = data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2416 gaim_debug_warning("oscar","NULL xfer; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2417 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2418 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2419 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2420 if (!(oft_info = xfer->data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2421 gaim_debug_warning("oscar","NULL oft_info; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2422 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2423 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2424 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2425 if (!(proxy_info = oft_info->proxy_info)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2426 gaim_debug_warning("oscar","NULL proxy_info; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2427 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2428 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2429 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2430 if(oft_info->success) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2431 gaim_debug_info("oscar","connection already successful, ignoring 2nd conn\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2432 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2433 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2434
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2435 xfer->fd = source;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2436 oft_info->conn->fd = source;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2437
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2438 proxy_info->conn = oft_info->conn;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2439 proxy_info->flags = AIM_RV_PROXY_CLIENT_FLAGS;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2440 memcpy(proxy_info->cookie, oft_info->cookie, 8);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2441
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2442 if(oft_info->send_or_recv == AIM_XFER_SEND) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2443 if(oft_info->stage == AIM_XFER_PROXY_STG1 || oft_info->stage == AIM_XFER_PROXY_STG3) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2444 gaim_debug_info("oscar","sending INIT SEND for stage 1/3 rv proxied send\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2445 if( (err = aim_rv_proxy_init_send(proxy_info)) ) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2446 gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2447 _("Unable to log into file transfer proxy."));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2448 gaim_debug_info("oscar", "error while sending INIT SEND rv proxy packet: %s\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2449 strerror(err));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2450 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2451 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2452 } else if(oft_info->stage == AIM_XFER_PROXY_STG2) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2453 gaim_debug_info("oscar","sending INIT RECV for stage 2 rv proxied send\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2454 if( (err = aim_rv_proxy_init_recv(proxy_info)) ) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2455 gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2456 _("Unable to log into file transfer proxy."));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2457 gaim_debug_info("oscar", "error while sending INIT RECV rv proxy packet: %s\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2458 strerror(err));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2459 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2460 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2461 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2462 gaim_debug_warning("oscar","no proxy type specified; aborting transfer\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2463 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2464 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2465 } else if(oft_info->send_or_recv == AIM_XFER_RECV) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2466 if(oft_info->stage == AIM_XFER_PROXY_STG2) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2467 gaim_debug_info("oscar","sending INIT SEND for stage 2 rv proxied receive\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2468 if( (err = aim_rv_proxy_init_send(proxy_info)) ) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2469 gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2470 _("Unable to log into file transfer proxy."));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2471 gaim_debug_info("oscar", "error while sending INIT SEND rv proxy packet: %s\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2472 strerror(err));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2473 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2474 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2475 } else if(oft_info->stage == AIM_XFER_PROXY_STG1
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2476 || oft_info->stage == AIM_XFER_PROXY_STG3) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2477 gaim_debug_info("oscar","sending INIT RECV for stage 1/3 rv proxied receive\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2478 if( (err = aim_rv_proxy_init_recv(proxy_info)) ) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2479 gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2480 _("Unable to log into file transfer proxy."));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2481 gaim_debug_info("oscar", "error while sending INIT RECV rv proxy packet: %s\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2482 strerror(err));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2483 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2484 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2485 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2486 gaim_debug_warning("oscar","no proxy type specified; aborting transfer\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2487 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2488 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2489 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2490 gaim_debug_warning("oscar","no send_or_recv value specified; aborting\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2491 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2492 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2493 free(proxy_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2494 oft_info->proxy_info = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2495
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2496 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_xfer_proxylogin_cb, xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2497 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2498
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2499
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2500 /*
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2501 * xfer functions used when sending files
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2502 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2503
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2504 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2505 * Send a request to another client notifying them we want to sent a file
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2506 */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2507 static void oscar_send_file_request(GaimXfer *xfer)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2508 {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2509 struct aim_oft_info *oft_info = xfer->data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2510 GaimConnection *gc = oft_info->sess->aux_data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2511 OscarData *od = gc->proto_data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2512
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2513 gaim_debug_info("oscar", "AAA - in oscar_send_file_request\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2514
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2515 if (oft_info->conn) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2516 xfer->filename = g_path_get_basename(xfer->local_filename);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2517 strncpy(oft_info->fh.name, xfer->filename, 64);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2518 oft_info->fh.name[63] = '\0';
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2519 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2520 oft_info->fh.size = gaim_xfer_get_size(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2521
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2522 /* Calculating the checksum can take a very long time for large files */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2523 gaim_debug_info("oscar","calculating file checksum\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2524 oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2525 gaim_debug_info("oscar","checksum calculated\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2526
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2527 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2528
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2529 aim_im_sendch2_sendfile_ask(od->sess, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2530 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2531 AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2532 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2533 gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2534 _("Unable to establish listener socket or no AOL proxy connection present."));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2535 gaim_xfer_cancel_local(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2536 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2537 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2538
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2539
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2540 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2541 * Opens a listener socket in preparation for sending a file
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2542 * This is not called if we are using a rendezvous proxy server
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2543 */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2544 static void oscar_xfer_init_send(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2545 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2546 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2547 GaimConnection *gc = oft_info->sess->aux_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2548 OscarData *od = gc->proto_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2549 int listenfd;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2550
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2551 gaim_debug_info("oscar", "AAA - in oscar_xfer_init_send\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2552
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2553 /* Create a listening socket and an associated libfaim conn */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2554 if ((listenfd = gaim_network_listen_range(5190, 5199)) < 0) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2555 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2556 return;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2557 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2558 xfer->local_port = gaim_network_get_port_from_fd(listenfd);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2559 oft_info->port = xfer->local_port;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2560 if (aim_sendfile_listen(od->sess, oft_info, listenfd) != 0) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2561 gaim_xfer_cancel_local(xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2562 return;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2563 }
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2564 gaim_debug_misc("oscar",
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2565 "port is %hu, ip is %s\n",
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2566 xfer->local_port, oft_info->clientip);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2567
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2568 if(oft_info->conn)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2569 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2570 oft_info->conn);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2571 else
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2572 gaim_debug_info("oscar","NULL oft_info->conn; not adding watcher\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2573
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2574 oscar_send_file_request(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2575 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2576
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2577 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2578 * "On second thought, you don't deserve this file."
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2579 */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2580 static void oscar_xfer_cancel_send(GaimXfer *xfer)
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2581 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2582 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2583 GaimConnection *gc = oft_info->sess->aux_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2584 OscarData *od = gc->proto_data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2585
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2586 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
2587
9771
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2588 if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE)
9812dde4323e [gaim-migrate @ 10639]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2589 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2590
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2591 /* Added a few sanity checks to prevent segfaulting */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2592 if(oft_info) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2593 if(oft_info->sess && oft_info->conn)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2594 aim_conn_kill(oft_info->sess, &oft_info->conn);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2595 aim_oft_destroyinfo(oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2596 }
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2597 xfer->data = NULL;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2598 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2599 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2600
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2601 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2602 * Called when we send some data to the other client
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2603 */
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
2604 static void oscar_xfer_ack_send(GaimXfer *xfer, const guchar *buffer, size_t size)
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2605 {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2606 struct aim_oft_info *oft_info = xfer->data;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2607
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2608 /* I'm not sure I like how we do this. --marv
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2609 * 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
2610 * of as a transferring just a single file. The rendezvous
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2611 * establishes a connection between two computers, and then
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2612 * those computers can use the same connection for transferring
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2613 * 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
2614 * 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
2615 * prpl, whenever one side or the other says they're finished
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2616 * using the connection. There might be a better way to intercept
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2617 * the socket from the core, however... --KingAnt
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2618 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2619
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2620 /*
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2621 * 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
2622 * 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
2623 */
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2624 if (gaim_xfer_get_bytes_remaining(xfer) <= 0) {
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2625 gaim_input_remove(xfer->watcher);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2626 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
2627 xfer->fd = 0;
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2628 gaim_xfer_set_completed(xfer, TRUE);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2629 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2630 }
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2631
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2632 /*
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2633 * Called by the Gaim core to determine whether or not we're allowed to send a file
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2634 * to this user.
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2635 */
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2636 static gboolean oscar_can_receive_file(GaimConnection *gc, const char *who) {
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2637 gboolean can_receive = FALSE;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2638 OscarData *od = gc->proto_data;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2639
11049
c716cc44bfaa [gaim-migrate @ 12983]
Jonathan Clark <ardentlygnarly>
parents: 11033
diff changeset
2640 if (od != NULL) {
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2641 aim_userinfo_t *userinfo;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2642 userinfo = aim_locate_finduserinfo(od->sess, who);
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2643 if (userinfo && userinfo->capabilities & AIM_CAPS_SENDFILE)
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2644 can_receive = TRUE;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2645 }
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2646
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2647 return can_receive;
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2648 }
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2649
12143
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2650 static GaimXfer*
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2651 oscar_new_xfer(GaimConnection *gc, const char *who) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2652 OscarData *od;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2653 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2654 struct aim_oft_info *oft_info;
8231
f50c059b6384 [gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents: 8227
diff changeset
2655 const char *ip;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2656 gboolean use_rv_proxy;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2657
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2658 use_rv_proxy = gaim_prefs_get_bool("/plugins/prpl/oscar/use_rv_proxy");
11401
69b0378c79e0 [gaim-migrate @ 13636]
Mark Doliner <mark@kingant.net>
parents: 11399
diff changeset
2659 if(use_rv_proxy)
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2660 gaim_debug_info("oscar","using stage 1 proxied transfer\n");
11401
69b0378c79e0 [gaim-migrate @ 13636]
Mark Doliner <mark@kingant.net>
parents: 11399
diff changeset
2661
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2662 od = (OscarData *)gc->proto_data;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2663
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2664 /* 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
2665
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2666 /* Build the file transfer handle */
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2667 xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, who);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2668
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2669 /* Create the oscar-specific data */
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2670 if (use_rv_proxy) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2671 /* This hostname will be resolved by gaim_proxy_connect */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2672 xfer->remote_ip = g_strdup(AIM_RV_PROXY_SERVER_URL);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2673 xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2674 oft_info = aim_oft_createinfo(od->sess, NULL /*cookie*/, who, 0 /*ip*/, 0, 0, 0, NULL,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2675 AIM_XFER_SEND, AIM_XFER_PROXY, AIM_XFER_PROXY_STG1);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2676 oft_info->proxy_info = aim_rv_proxy_createinfo(oft_info->sess, NULL, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2677 /* We must create a cookie before the request is sent
12143
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2678 * so that it can be sent to the proxy */
11401
69b0378c79e0 [gaim-migrate @ 13636]
Mark Doliner <mark@kingant.net>
parents: 11399
diff changeset
2679 aim_icbm_makecookie(oft_info->cookie);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2680 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2681 ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2682 oft_info = aim_oft_createinfo(od->sess, NULL, who, ip, 0, 0, 0, NULL,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2683 AIM_XFER_SEND, AIM_XFER_DIRECT, AIM_XFER_PROXY_NONE);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2684 }
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2685 xfer->data = oft_info;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2686
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2687 /* Setup our I/O op functions */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2688 if (use_rv_proxy)
11399
48244c196228 [gaim-migrate @ 13634]
Mark Doliner <mark@kingant.net>
parents: 11369
diff changeset
2689 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2690 else
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2691 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_send);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2692 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2693 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
2694 gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_send);
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
2695 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_send);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2696
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2697 /* Keep track of this transfer for later */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2698 od->file_transfers = g_slist_append(od->file_transfers, xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2699
12143
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2700 return xfer;
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2701 }
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2702
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2703 /*
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2704 * Called by the Gaim core when the user indicates that a file is to be sent to
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2705 * a special someone.
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2706 */
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2707 static void oscar_send_file(GaimConnection *gc, const char *who, const char *file) {
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2708 GaimXfer *xfer = oscar_new_xfer(gc, who);
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
2709
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2710 /* Now perform the request */
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2711 if (file)
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2712 gaim_xfer_request_accepted(xfer, file);
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2713 else
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
2714 gaim_xfer_request(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2715 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2716
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2717 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
2718 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2719 OscarData *od = gc->proto_data;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2720 GaimAccount *account = gc->account;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2721 aim_conn_t *bosconn;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2722 char *host; int port;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2723 int i, rc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2724 va_list ap;
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2725 struct aim_authresp_info *info;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
2726
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
2727 port = gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2728
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2729 va_start(ap, fr);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2730 info = va_arg(ap, struct aim_authresp_info *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2731 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2732
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2733 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2734 "inside auth_resp (Screen name: %s)\n", info->sn);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2735
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2736 if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
2737 char buf[256];
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2738 switch (info->errorcode) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2739 case 0x05:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2740 /* Incorrect nick/password */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2741 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2742 gaim_connection_error(gc, _("Incorrect nickname or password."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2743 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2744 case 0x11:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2745 /* Suspended account */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2746 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2747 gaim_connection_error(gc, _("Your account is currently suspended."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2748 break;
3498
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
2749 case 0x14:
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
2750 /* service temporarily unavailable */
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2751 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
2752 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2753 case 0x18:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2754 /* connecting too frequently */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2755 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2756 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
2757 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2758 case 0x1c:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2759 /* client too old */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2760 gc->wants_to_die = TRUE;
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2761 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
2762 gaim_connection_error(gc, buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2763 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2764 default:
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
2765 gaim_connection_error(gc, _("Authentication failed"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2766 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2767 }
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2768 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2769 "Login Error Code 0x%04hx\n", info->errorcode);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2770 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2771 "Error URL: %s\n", info->errorurl);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2772 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2773 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2774 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2775
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2776
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
2777 gaim_debug_misc("oscar", "Reg status: %hu\n", info->regstatus);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2778
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2779 if (info->email) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2780 gaim_debug_misc("oscar", "Email: %s\n", info->email);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2781 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2782 gaim_debug_misc("oscar", "Email is NULL\n");
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2783 }
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2784
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2785 gaim_debug_misc("oscar", "BOSIP: %s\n", info->bosip);
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2786 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2787 "Closing auth connection...\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2788 aim_conn_kill(sess, &fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2789
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
2790 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2791 if (bosconn == NULL) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2792 gaim_connection_error(gc, _("Internal Error"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2793 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2794 return 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2795 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2796
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
2797 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
2798 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
2799 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2800 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
2801 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
2802 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
2803 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
2804 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
2805 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
2806 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
2807 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
2808 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
2809 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
2810 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
2811 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
2812 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
2813 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
2814 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
2815 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
2816 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
2817 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_REQUESTINFOTIMEOUT, gaim_reqinfo_timeout, 0);
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2818 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_GOTINFOBLOCK, gaim_got_infoblock, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2819 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
2820 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
2821 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
2822 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2823 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2824 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2825 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
2826 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
2827 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
2828 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
2829 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
2830 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
2831 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
2832 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_INFO, gaim_icqinfo, 0);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
2833 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
2834 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
2835 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
2836 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
2837 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
2838 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
2839 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
2840 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
2841 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
2842 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADDED, gaim_ssi_gotadded, 0);
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2843
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2844 od->conn = bosconn;
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2845 for (i = 0; i < (int)strlen(info->bosip); i++) {
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2846 if (info->bosip[i] == ':') {
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2847 port = atoi(&(info->bosip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2848 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2849 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2850 }
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2851 host = g_strndup(info->bosip, i);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2852 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2853 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
2854 g_free(host);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2855 if (rc < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2856 gaim_connection_error(gc, _("Could Not Connect"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2857 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2858 return 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2859 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
2860 aim_sendcookie(sess, bosconn, info->cookielen, info->cookie);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2861 gaim_input_remove(gc->inpa);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2862
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2863 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
2864 ck[3] = 0x64;
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
2865
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2866 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2867 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2868
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2869 static void
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2870 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
2871 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2872 GaimConnection *gc = user_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2873 OscarData *od = gc->proto_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2874 aim_session_t *sess = od->sess;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2875
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2876 aim_auth_securid_send(sess, msg);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2877 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2878
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2879 static void
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2880 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
2881 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2882 GaimConnection *gc = user_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2883 OscarData *od = gc->proto_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2884
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2885 /* Disconnect */
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2886 gc->wants_to_die = TRUE;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2887 gaim_connection_error(gc, _("The SecurID key entered is invalid."));
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2888 od->killme = TRUE;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2889 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2890
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2891 static int
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2892 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
2893 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2894 GaimConnection *gc = sess->aux_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2895 GaimAccount *account = gaim_connection_get_account(gc);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2896 gchar *primary;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2897
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2898 gaim_debug_info("oscar", "Got SecurID request\n");
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2899
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2900 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
2901 gaim_request_input(gc, NULL, _("Enter SecurID"), primary,
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2902 _("Enter the 6 digit number from the digital display."),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2903 FALSE, FALSE, NULL,
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2904 _("OK"), G_CALLBACK(gaim_parse_auth_securid_request_yes_cb),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2905 _("Cancel"), G_CALLBACK(gaim_parse_auth_securid_request_no_cb),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2906 gc);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2907 g_free(primary);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2908
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2909 return 1;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2910 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
2911
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
2912 /* XXX - Should use gaim_url_fetch for the below stuff */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2913 struct pieceofcrap {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2914 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2915 unsigned long offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2916 unsigned long len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2917 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2918 int fd;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2919 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2920 unsigned int inpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2921 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2922
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2923 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2924 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2925 struct pieceofcrap *pos = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2926 OscarData *od = pos->gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2927 char in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2928 int x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2929 unsigned char m[17];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2930
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2931 while (read(pos->fd, &in, 1) == 1) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2932 if (in == '\n')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2933 x++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2934 else if (in != '\r')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2935 x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2936 if (x == 2)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2937 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2938 in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2939 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2940 if (in != '\n') {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
2941 char buf[256];
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
2942 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
2943 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2944 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2945 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2946 buf);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2947 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2948 close(pos->fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2949 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2950 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2951 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2952 read(pos->fd, m, 16);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2953 m[16] = '\0';
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2954 gaim_debug_misc("oscar", "Sending hash: ");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2955 for (x = 0; x < 16; x++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2956 gaim_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]);
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2957
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2958 gaim_debug_misc(NULL, "\n");
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2959 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2960 close(pos->fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2961 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
2962 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2963 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2964
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2965 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2966 struct pieceofcrap *pos = data;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2967 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2968
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2969 pos->fd = source;
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2970
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2971 if (source < 0) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2972 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
2973 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2974 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2975 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2976 buf);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2977 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2978 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2979 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2980 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2981 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2982 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2983
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2984 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
2985 pos->offset, pos->len, pos->modname ? pos->modname : "");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2986 write(pos->fd, buf, strlen(buf));
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2987 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2988 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2989 g_free(pos->modname);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
2990 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
2991 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2992 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2993
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2994 /* size of icbmui.ocm, the largest module in AIM 3.5 */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2995 #define AIM_MAX_FILE_SIZE 98304
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2996
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2997 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2998 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2999 struct pieceofcrap *pos;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3000 fu32_t offset, len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3001 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3002
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3003 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3004 offset = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3005 len = va_arg(ap, fu32_t);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3006 modname = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3007 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3008
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3009 gaim_debug_misc("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3010 "offset: %u, len: %u, file: %s\n",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3011 offset, len, (modname ? modname : "aim.exe"));
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3012
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3013 if (len == 0) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3014 gaim_debug_misc("oscar", "len is 0, hashing NULL\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3015 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3016 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3017 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3018 }
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
3019 /* 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
3020 #if 0
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3021 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3022 char *buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3023 int i = 8;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3024 if (modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3025 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3026 buf = g_malloc(i);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3027 i = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3028 if (modname) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3029 memcpy(buf, modname, strlen(modname));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3030 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3031 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3032 buf[i++] = offset & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3033 buf[i++] = (offset >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3034 buf[i++] = (offset >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3035 buf[i++] = (offset >> 24) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3036 buf[i++] = len & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3037 buf[i++] = (len >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3038 buf[i++] = (len >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3039 buf[i++] = (len >> 24) & 0xff;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3040 gaim_debug_misc("oscar", "len + offset is invalid, "
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3041 "hashing request\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3042 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3043 g_free(buf);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3044 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3045 }
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
3046 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3047
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3048 pos = g_new0(struct pieceofcrap, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3049 pos->gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3050 pos->conn = fr->conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3051
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3052 pos->offset = offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3053 pos->len = len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3054 pos->modname = modname ? g_strdup(modname) : NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3055
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3056 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
3057 char buf[256];
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3058 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3059 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3060 g_free(pos);
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
3061 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
3062 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3063 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
3064 _("Gaim was unable to get a valid login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3065 buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3066 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3067
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3068 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3069 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3070
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3071 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
3072 GaimConnection *gc = sess->aux_data;
5591
74a0e79ad627 [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
3073 GaimAccount *account = gaim_connection_get_account(gc);
12049
d854a6fc7b82 [gaim-migrate @ 14344]
Mark Doliner <mark@kingant.net>
parents: 12000
diff changeset
3074 struct client_info_s info = CLIENTINFO_GAIM;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3075 va_list ap;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3076 char *key;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3077
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3078 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3079 key = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3080 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3081
12049
d854a6fc7b82 [gaim-migrate @ 14344]
Mark Doliner <mark@kingant.net>
parents: 12000
diff changeset
3082 aim_send_login(sess, fr->conn, gaim_account_get_username(account),
d854a6fc7b82 [gaim-migrate @ 14344]
Mark Doliner <mark@kingant.net>
parents: 12000
diff changeset
3083 gaim_connection_get_password(gc), &info, key);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3084
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3085 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
3086 ck[2] = 0x6c;
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
3087
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3088 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3089 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3090
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3091 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
3092 GaimConnection *gc = sess->aux_data;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3093 struct chat_connection *chatcon;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3094 static int id = 1;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3095
6905
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
3096 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
3097 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
3098 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
3099 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
3100 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
3101
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3102 aim_clientready(sess, fr->conn);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3103
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3104 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3105 chatcon->id = id;
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
3106 chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3107
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3108 return 1;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3109 }
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3110
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3111 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
3112
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3113 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
3114 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
3115
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3116 aim_clientready(sess, fr->conn);
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3117
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3118 aim_chatnav_reqrights(sess, fr->conn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3119
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3120 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3121 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3122
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3123 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
3124
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3125 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
3126 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
3127
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
3128 aim_email_sendcookies(sess);
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
3129 aim_email_activate(sess);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3130 aim_clientready(sess, fr->conn);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3131
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3132 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3133 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3134
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3135 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
3136 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3137 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3138
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3139 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
3140 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
3141 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
3142
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3143 aim_clientready(sess, fr->conn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3144
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
3145 od->iconconnecting = FALSE;
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
3146
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3147 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
3148 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
3149 od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3150
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3151 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3152 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3153
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3154 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
3155 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3156 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3157 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3158 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3159
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3160 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3161 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3162 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3163 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3164
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3165 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3166 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3167 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
3168 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3169
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3170 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3171 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3172 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3173 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3174 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3175 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3176
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3177 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3178 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
3179 gaim_debug_info("oscar", "chatnav: connected\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3180 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3181
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
3182 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3183 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3184 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3185 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3186 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3187 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3188
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3189 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3190 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3191 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3192 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3193
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3194 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3195 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3196 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
3197 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3198
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3199 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3200 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3201 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3202 "unable to connect to authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3203 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3204 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3205
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3206 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3207 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
3208 gaim_debug_info("oscar", "admin: connected\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3209 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3210
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
3211 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3212 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3213 struct chat_connection *ccon = data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3214 GaimConnection *gc = ccon->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3215 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3216 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3217 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3218
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3219 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3220 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3221 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3222 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3223 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3224 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3225 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3226
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3227 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3228 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3229 tstconn = ccon->conn;
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
3230 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3231
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3232 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3233 aim_conn_kill(sess, &tstconn);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3234 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3235 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3236 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3237 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3238 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3239
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3240 aim_conn_completeconnect(sess, ccon->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3241 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
3242 od->oscar_chats = g_slist_append(od->oscar_chats, ccon);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3243 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3244
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3245 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
3246 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3247 OscarData *od;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3248 aim_session_t *sess;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3249 aim_conn_t *tstconn;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3250
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3251 if (!g_list_find(gaim_connections_get_all(), gc)) {
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3252 close(source);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3253 return;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3254 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3255
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3256 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3257 sess = od->sess;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3258 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
3259 tstconn->fd = source;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3260
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3261 if (source < 0) {
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3262 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3263 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3264 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3265 return;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3266 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3267
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3268 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3269 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
3270 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3271 "email: connected\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3272 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3273
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3274 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
3275 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3276 OscarData *od;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3277 aim_session_t *sess;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3278 aim_conn_t *tstconn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3279
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3280 if (!g_list_find(gaim_connections_get_all(), gc)) {
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3281 close(source);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3282 return;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3283 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3284
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3285 od = gc->proto_data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3286 sess = od->sess;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3287 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3288 tstconn->fd = source;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3289
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3290 if (source < 0) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3291 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3292 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3293 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3294 return;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3295 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3296
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3297 aim_conn_completeconnect(sess, tstconn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3298 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
3299 gaim_debug_info("oscar", "icon: connected\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3300 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3301
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3302 /* 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
3303 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
3304 GaimConnection *gc = sess->aux_data;
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3305 GaimAccount *account = gaim_connection_get_account(gc);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3306 aim_conn_t *tstconn;
4452
2afc0f845e74 [gaim-migrate @ 4727]
Sean Egan <seanegan@gmail.com>
parents: 4443
diff changeset
3307 int i;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3308 char *host;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3309 int port;
4821
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
3310 va_list ap;
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
3311 struct aim_redirect_data *redir;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3312
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
3313 port = gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3314
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3315 va_start(ap, fr);
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3316 redir = va_arg(ap, struct aim_redirect_data *);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3317 va_end(ap);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3318
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3319 for (i = 0; i < (int)strlen(redir->ip); i++) {
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3320 if (redir->ip[i] == ':') {
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3321 port = atoi(&(redir->ip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3322 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3323 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3324 }
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3325 host = g_strndup(redir->ip, i);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3326
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3327 switch(redir->group) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3328 case 0x7: /* Authorizer */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3329 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3330 "Reconnecting with authorizor...\n");
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
3331 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3332 if (tstconn == NULL) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3333 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3334 "unable to reconnect with authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3335 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3336 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3337 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3338 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
3339 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
3340
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3341 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3342 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
3343 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3344 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3345 "unable to reconnect with authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3346 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3347 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3348 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
3349 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3350 break;
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3351
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3352 case 0xd: /* ChatNav */
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
3353 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3354 if (tstconn == NULL) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3355 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3356 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3357 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3358 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3359 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3360 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
3361 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
3362
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3363 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3364 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
3365 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3366 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3367 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3368 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3369 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3370 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
3371 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3372 break;
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3373
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3374 case 0xe: { /* Chat */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3375 struct chat_connection *ccon;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3376
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
3377 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3378 if (tstconn == NULL) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3379 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3380 "unable to connect to chat server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3381 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3382 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3383 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3384
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3385 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
3386 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
3387
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3388 ccon = g_new0(struct chat_connection, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3389 ccon->conn = tstconn;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3390 ccon->gc = gc;
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3391 ccon->name = g_strdup(redir->chat.room);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3392 ccon->exchange = redir->chat.exchange;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3393 ccon->instance = redir->chat.instance;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
3394 ccon->show = extract_name(redir->chat.room);
4634
d19872836812 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
3395
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3396 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3397 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
3398 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3399 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3400 "unable to connect to chat server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3401 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3402 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3403 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3404 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3405 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3406 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
3407 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3408 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3409 "Connected to chat room %s exchange %hu\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3410 ccon->name, ccon->exchange);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3411 } break;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3412
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3413 case 0x0010: { /* icon */
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
3414 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON))) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3415 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3416 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3417 g_free(host);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3418 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3419 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3420 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
3421 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
3422
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3423 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3424 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
3425 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3426 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3427 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3428 g_free(host);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3429 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3430 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3431 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3432 } break;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3433
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3434 case 0x0018: { /* email */
11162
ccb38cf22483 [gaim-migrate @ 13263]
Mark Doliner <mark@kingant.net>
parents: 11159
diff changeset
3435 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL))) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3436 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3437 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3438 g_free(host);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3439 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3440 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3441 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
3442 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
3443
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3444 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3445 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
3446 aim_conn_kill(sess, &tstconn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3447 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3448 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3449 g_free(host);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3450 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3451 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
3452 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3453 } break;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3454
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3455 default: /* huh? */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3456 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3457 "got redirect for unknown service 0x%04hx\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3458 redir->group);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3459 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3460 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3461
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3462 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3463 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3464 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3465
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3466 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
3467 {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3468 GaimConnection *gc;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3469 GaimAccount *account;
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
3470 GaimPresence *presence;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3471 OscarData *od;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3472 struct buddyinfo *bi;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3473 time_t time_idle = 0, signon = 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3474 int type = 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3475 int caps = 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3476 va_list ap;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3477 aim_userinfo_t *info;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3478 gboolean buddy_is_away = FALSE;
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3479 const char *status_id;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3480
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3481 gc = sess->aux_data;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3482 account = gaim_connection_get_account(gc);
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
3483 presence = gaim_account_get_presence(account);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3484 od = gc->proto_data;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3485
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3486 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3487 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3488 va_end(ap);
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
3489
10130
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
3490 g_return_val_if_fail(info != NULL, 1);
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
3491 g_return_val_if_fail(info->sn != NULL, 1);
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
3492
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3493 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3494 caps = info->capabilities;
3267
5947e31a01c0 [gaim-migrate @ 3285]
Sean Egan <seanegan@gmail.com>
parents: 3214
diff changeset
3495
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
3496 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
3497 if (info->flags & AIM_FLAG_AWAY)
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3498 buddy_is_away = TRUE;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3499 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3500 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3501 type = info->icqinfo.status;
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
3502 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
3503 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
3504 buddy_is_away = TRUE;
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
3505 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3506 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3507
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3508 if (caps & AIM_CAPS_ICQ_DIRECT)
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3509 caps ^= AIM_CAPS_ICQ_DIRECT;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3510
10860
d01d81de94d8 [gaim-migrate @ 12543]
Mark Doliner <mark@kingant.net>
parents: 10816
diff changeset
3511 /* info->idletime is the number of minutes that this user has been idle */
d01d81de94d8 [gaim-migrate @ 12543]
Mark Doliner <mark@kingant.net>
parents: 10816
diff changeset
3512 if (info->present & AIM_USERINFO_PRESENT_IDLE)
d01d81de94d8 [gaim-migrate @ 12543]
Mark Doliner <mark@kingant.net>
parents: 10816
diff changeset
3513 time_idle = time(NULL) - info->idletime * 60;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3514
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3515 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE)
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3516 signon = info->onlinesince;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
3517 else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3518 signon = time(NULL) - info->sessionlen;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3519
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
3520 if (!aim_sncmp(gaim_account_get_username(account), info->sn)) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3521 gaim_connection_set_display_name(gc, info->sn);
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
3522 od->timeoffset = signon - gaim_presence_get_login_time(presence);
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
3523 }
2305
0371b905baef [gaim-migrate @ 2315]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2303
diff changeset
3524
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3525 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
3526 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3527 bi = g_new0(struct buddyinfo, 1);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3528 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
3529 }
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
3530 bi->typingnot = FALSE;
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
3531 bi->ico_informed = FALSE;
6857
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
3532 bi->ipaddr = info->icqinfo.ipaddr;
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
3533
10563
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3534 /*
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3535 * 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
3536 * 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
3537 * 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
3538 * support available messages and the user DOES NOT have one set.
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3539 * Otherwise info->avail contains the available message.
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3540 */
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3541 if (info->avail != NULL)
10563
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3542 {
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3543 free(bi->availmsg);
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3544 if (info->avail[0] != '\0')
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3545 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
3546 else
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3547 bi->availmsg = NULL;
3e2cd3fe8897 [gaim-migrate @ 11944]
Mark Doliner <mark@kingant.net>
parents: 10560
diff changeset
3548 }
4732
c15e0699acae [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
3549
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3550 /* Server stored icon stuff */
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3551 if (info->iconcsumlen) {
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
3552 const char *filename = NULL, *saved_b16 = NULL;
9801
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3553 char *b16 = NULL, *filepath = NULL;
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3554 GaimBuddy *b = NULL;
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3555
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
3556 b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3557 b = gaim_find_buddy(account, info->sn);
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3558 /*
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3559 * 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
3560 * we want to know.
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3561 */
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3562 filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon");
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3563 if (filename != NULL) {
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3564 if (g_file_test(filename, G_FILE_TEST_EXISTS))
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3565 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3566 "icon_checksum");
9801
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3567 else {
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3568 filepath = g_build_filename(gaim_buddy_icons_get_cache_dir(),
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3569 filename, NULL);
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3570 if (g_file_test(filepath, G_FILE_TEST_EXISTS))
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3571 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3572 "icon_checksum");
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3573 g_free(filepath);
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
3574 }
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3575 } else
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
3576 saved_b16 = NULL;
7054
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7045
diff changeset
3577
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3578 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3579 GSList *cur = od->requesticon;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3580 while (cur && aim_sncmp((char *)cur->data, info->sn))
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3581 cur = cur->next;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3582 if (!cur) {
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3583 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
3584 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
3585 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
3586 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3587 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3588 }
6053
74b281b4ae29 [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3589 g_free(b16);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3590 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3591
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3592 if (aim_sn_is_icq(info->sn)) {
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3593 if (type & AIM_ICQ_STATE_CHAT)
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3594 status_id = OSCAR_STATUS_ID_FREE4CHAT;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3595 else if (type & AIM_ICQ_STATE_DND)
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3596 status_id = OSCAR_STATUS_ID_DND;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3597 else if (type & AIM_ICQ_STATE_OUT)
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3598 status_id = OSCAR_STATUS_ID_NA;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3599 else if (type & AIM_ICQ_STATE_BUSY)
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3600 status_id = OSCAR_STATUS_ID_OCCUPIED;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3601 else if (type & AIM_ICQ_STATE_AWAY)
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3602 status_id = OSCAR_STATUS_ID_AWAY;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3603 else if (type & AIM_ICQ_STATE_INVISIBLE)
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3604 status_id = OSCAR_STATUS_ID_INVISIBLE;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3605 else
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3606 status_id = OSCAR_STATUS_ID_AVAILABLE;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3607 } else {
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3608 if (buddy_is_away == TRUE)
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3609 status_id = OSCAR_STATUS_ID_AWAY;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3610 else
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3611 status_id = OSCAR_STATUS_ID_AVAILABLE;
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3612 }
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
3613 gaim_prpl_got_user_status(account, info->sn, status_id, NULL);
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
3614 gaim_prpl_got_user_login_time(account, info->sn, signon - od->timeoffset);
11820
2cf6d4cf2cb0 [gaim-migrate @ 14111]
Richard Laager <rlaager@wiktel.com>
parents: 11810
diff changeset
3615 #if 0
2cf6d4cf2cb0 [gaim-migrate @ 14111]
Richard Laager <rlaager@wiktel.com>
parents: 11810
diff changeset
3616 gaim_prpl_got_user_warning_level(account, info->sn, info->warnlevel/10.0 + 0.5);
2cf6d4cf2cb0 [gaim-migrate @ 14111]
Richard Laager <rlaager@wiktel.com>
parents: 11810
diff changeset
3617 #endif
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3618
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3619 if (time_idle > 0)
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3620 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
3621 else
c124bef68132 [gaim-migrate @ 10926]
Mark Doliner <mark@kingant.net>
parents: 9995
diff changeset
3622 gaim_prpl_got_user_idle(account, info->sn, FALSE, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3623
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3624 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3625 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3626
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3627 static void gaim_check_comment(OscarData *od, const char *str) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
3628 if ((str == NULL) || strcmp(str, (const char *)ck))
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3629 aim_locate_setcaps(od->sess, caps_aim);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3630 else
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3631 aim_locate_setcaps(od->sess, caps_aim | AIM_CAPS_SECUREIM);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3632 }
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
3633
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3634 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
3635 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3636 OscarData *od = gc->proto_data;
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3637 GaimAccount *account = gaim_connection_get_account(gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3638 va_list ap;
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
3639 aim_userinfo_t *info;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3640
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3641 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3642 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3643 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3644
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3645 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
3646
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
3647 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
3648
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3649 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3650 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3651
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3652 /* BBB */
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3653 /*
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3654 * This is called after a remote AIM user has connected to us.
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3655 * If not using a rendezvous proxy, then we want to do some
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3656 * voodoo with the socket file descriptors. Then we always
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3657 * add a 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
3658 */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3659 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
3660 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3661 OscarData *od = (OscarData *)gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3662 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3663 struct aim_oft_info *oft_info;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3664 va_list ap;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3665 aim_conn_t *conn, *listenerconn;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3666
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3667 gaim_debug_info("oscar", "AAA - in oscar_sendfile_estblsh\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3668
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3669 va_start(ap, fr);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3670 conn = va_arg(ap, aim_conn_t *);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3671 listenerconn = va_arg(ap, aim_conn_t *);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3672 va_end(ap);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3673
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3674 /* Finding by conn will work for proxied connections only
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3675 * Finding by listenerconn will work for direct connections only */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3676 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3677 if(!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn))) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3678 gaim_debug_warning("oscar","xfer not found via connection\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3679 return 1;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3680 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3681 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3682 if (!(oft_info = xfer->data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3683 gaim_debug_warning("oscar","NULL data\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3684 return 1;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3685 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3686
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3687 /* Mark connection as success so further connections aren't attempted
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3688 * This is important here since some receive file code paths pass through here */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3689 oft_info->success = TRUE;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3690
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3691 if(oft_info->method != AIM_XFER_PROXY) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3692 /* Stop watching listener conn; watch transfer conn instead */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3693 gaim_input_remove(xfer->watcher);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3694
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3695 aim_conn_kill(sess, &listenerconn);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3696
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3697 oft_info->conn = conn;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3698 xfer->fd = oft_info->conn->fd;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3699 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3700
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3701 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3702
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3703 if(oft_info->send_or_recv == AIM_XFER_SEND) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3704 aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3705 oscar_sendfile_ack, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3706 aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3707 oscar_sendfile_done, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3708
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3709 /* Inform the other user that we are connected and ready to transfer */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3710 aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3711 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3712
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3713 /* For a file send, we'll hopefully end up in oscar_sendfile_ack next
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3714 * For a file receive, oscar_sendfile_prompt */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3715
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3716 return 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3717 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3718
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3719 /*
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3720 * This is the gaim callback passed to gaim_proxy_connect when connecting to another AIM
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3721 * user in order to transfer a file
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3722 * Takes xfer as data and fd as source
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3723 * BBB
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3724 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3725 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
3726 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3727 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3728
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3729 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3730 "AAA - in oscar_sendfile_connected\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3731 if (!(xfer = data))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3732 return;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3733 if (!(oft_info = xfer->data))
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3734 return;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3735 if(oft_info->success) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3736 gaim_debug_info("oscar","connection already successful; ignoring 2nd conn\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3737 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3738 }
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
3739 if (source < 0) {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3740 gaim_debug_info("oscar","received fd of %d; aborting transfer\n", source);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3741 gaim_xfer_cancel_remote(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3742 return;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3743 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3744 oft_info->success = TRUE; /* Mark this connection as successful before it times out */
11214
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
3745
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3746 /* We might have already set these in oscar_sendfile_proxylogin, but it won't
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3747 * hurt to do it again since it is rather necessary */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3748 xfer->fd = source;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3749 oft_info->conn->fd = source;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3750
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3751 aim_conn_completeconnect(oft_info->sess, oft_info->conn);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3752
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3753 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
3754
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3755 /* Inform the other user that we are connected and accept the transfer
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3756 * Except for a stage 2 receive, then we'll be the ones receiving this accept message */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3757 if(oft_info->stage != AIM_XFER_PROXY_STG2)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3758 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3759
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3760 /* Don't wait around if this is a redirected send */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3761 if(oft_info->send_or_recv == AIM_XFER_SEND) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3762 /* We should only get here if this is a redirected file send */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3763 aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3764 oscar_sendfile_ack, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3765 aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3766 oscar_sendfile_done, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3767
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3768 /* Inform the other user that we are ready to transfer */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3769 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_PROMPT, oft_info);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3770 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3771 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3772
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3773 /*
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3774 * 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
3775 * 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
3776 * 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
3777 * get like totally ready to like, receive the file, kay?
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3778 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3779 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
3780 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3781 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3782 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3783 struct aim_oft_info *oft_info;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3784 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3785 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3786 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3787 struct aim_fileheader_t *fh;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3788
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3789 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3790 "AAA - in oscar_sendfile_prompt\n");
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3791
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3792 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3793 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3794 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3795 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3796 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3797
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3798 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3799 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3800
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3801 if (!(oft_info = xfer->data))
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3802 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3803
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3804 /* We want to stop listening with a normal thingy */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3805 gaim_input_remove(xfer->watcher);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3806 xfer->watcher = 0;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3807
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3808 /* They sent us some information about the file they're sending */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3809 memcpy(&oft_info->fh, fh, sizeof(*fh));
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3810
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3811 /* Fill in the cookie */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3812 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
3813
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3814 /* 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
3815 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
3816 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3817
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3818 return 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3819 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3820
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
3821 /*
4657
745f583372cd [gaim-migrate @ 4968]
Mark Doliner <mark@kingant.net>
parents: 4656
diff changeset
3822 * 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
3823 * 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
3824 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3825 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
3826 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3827 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3828 GaimXfer *xfer;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3829 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3830 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3831 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3832 struct aim_fileheader_t *fh;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3833
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3834 gaim_debug_info("oscar", "AAA - in oscar_sendfile_ack\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3835 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3836 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3837 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3838 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3839 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3840
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3841 if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3842 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3843
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3844 /* We want to stop listening with a normal thingy */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3845 gaim_input_remove(xfer->watcher);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3846 xfer->watcher = 0;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3847
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3848 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3849
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3850 return 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3851 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3852
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3853 /*
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3854 * 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
3855 * so we can close our direct connection and what not.
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3856 */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3857 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
3858 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3859 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3860 GaimXfer *xfer;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3861 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3862 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3863 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3864 struct aim_fileheader_t *fh;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3865 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3866
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3867 gaim_debug_info("oscar", "AAA - in oscar_sendfile_done\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3868 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3869 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3870 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3871 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3872 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3873
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3874 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3875 gaim_debug_warning("oscar","xfer not found\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3876 return 1;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3877 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3878 if(!(oft_info = xfer->data)) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3879 gaim_debug_warning("oscar","NULL oft_info\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3880 return 1;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3881 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3882 if(fh->nrecvd == fh->size)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3883 gaim_xfer_set_completed(xfer, TRUE);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3884
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
3885 xfer->fd = conn->fd;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3886 gaim_xfer_end(xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3887
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3888 return 0;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3889 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3890
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3891 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
3892 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3893 OscarData *od = gc->proto_data;
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3894 GaimAccount *account = gaim_connection_get_account(gc);
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
3895 GaimMessageFlags flags = 0;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3896 struct buddyinfo *bi;
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
3897 char *iconfile;
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3898 GString *message;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3899 gchar *tmp;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3900 aim_mpmsg_section_t *curpart;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3901
11537
9b58dadf1c16 [gaim-migrate @ 13791]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11533
diff changeset
3902 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
3903 userinfo->sn, args->mpmsg.numparts);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3904
10595
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
3905 if (args->mpmsg.numparts == 0)
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
3906 return 1;
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
3907
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3908 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
3909 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3910 bi = g_new0(struct buddyinfo, 1);
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
3911 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
3912 }
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
3913
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
3914 if (args->icbmflags & AIM_IMFLAGS_AWAY)
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
3915 flags |= GAIM_MESSAGE_AUTO_RESP;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3916
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3917 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3918 bi->typingnot = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3919 else
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3920 bi->typingnot = FALSE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3921
4380
fe465b7d9440 [gaim-migrate @ 4646]
Mark Doliner <mark@kingant.net>
parents: 4374
diff changeset
3922 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
3923 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3924 "%s has an icon\n", userinfo->sn);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3925 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
3926 bi->ico_need = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3927 bi->ico_len = args->iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3928 bi->ico_csum = args->iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
3929 bi->ico_time = args->iconstamp;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3930 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3931 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3932
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
3933 iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(account));
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
3934 if ((iconfile != NULL) &&
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
3935 (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
3936 FILE *file;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3937 struct stat st;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3938
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
3939 if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
3940 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
3941 file = g_fopen(iconfile, "rb");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3942 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
3943 /* XXX - Use g_file_get_contents() */
2603
24664768a739 [gaim-migrate @ 2616]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2597
diff changeset
3944 int len = fread(buf, 1, st.st_size, file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3945 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3946 "Sending buddy icon to %s (%d bytes, "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3947 "%lu reported)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3948 userinfo->sn, len, st.st_size);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3949 aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size,
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3950 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3951 fclose(file);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
3952 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3953 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3954 "Can't open buddy icon file!\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3955 g_free(buf);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
3956 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3957 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3958 "Can't stat buddy icon file!\n");
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3959 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
3960 g_free(iconfile);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3961
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3962 message = g_string_new("");
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3963 curpart = args->mpmsg.parts;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3964 while (curpart != NULL) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
3965 tmp = gaim_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset,
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
3966 - curpart->charsubset, curpart->data, curpart->datalen);
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3967 if (tmp != NULL) {
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3968 g_string_append(message, tmp);
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3969 g_free(tmp);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3970 }
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3971
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3972 curpart = curpart->next;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3973 }
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
3974 tmp = g_string_free(message, FALSE);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3975
8666
7a99cfed1996 [gaim-migrate @ 9418]
Mark Doliner <mark@kingant.net>
parents: 8660
diff changeset
3976 /*
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3977 * 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
3978 * 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
3979 * 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
3980 * replaced with <br>
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
3981 *
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
3982 * 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
3983 * they need to be special-cased somehow.
8666
7a99cfed1996 [gaim-migrate @ 9418]
Mark Doliner <mark@kingant.net>
parents: 8660
diff changeset
3984 */
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3985 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
3986 /* 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
3987 gchar *tmp2 = g_markup_escape_text(tmp, -1);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3988 g_free(tmp);
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3989 tmp = tmp2;
10783
48779a02fe99 [gaim-migrate @ 12412]
Mark Doliner <mark@kingant.net>
parents: 10781
diff changeset
3990 tmp2 = gaim_strreplace(tmp, "\r\n", "<br>");
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3991 g_free(tmp);
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
3992 tmp = tmp2;
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3993 }
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
3994
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
3995 serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3996 g_free(tmp);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3997
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3998 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3999 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4000
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4001 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
4002 GaimConnection *gc;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4003 GaimAccount *account;
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4004 OscarData *od;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4005 const char *username = NULL;
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4006 char *message = NULL;
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4007
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4008 g_return_val_if_fail(sess != NULL, 0);
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4009 g_return_val_if_fail(sess->aux_data != NULL, 0);
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4010
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4011 gc = sess->aux_data;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4012 account = gaim_connection_get_account(gc);
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4013 od = gc->proto_data;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4014 username = gaim_account_get_username(account);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4015
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4016 if (args == NULL)
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
4017 return 0;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4018
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4019 gaim_debug_misc("oscar", "rendezvous with %s, status is %hu\n",
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4020 userinfo->sn, args->status);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4021
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4022 if (args->msg != NULL)
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4023 {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4024 if (args->encoding != NULL)
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4025 {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4026 char *encoding = NULL;
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4027 encoding = oscar_encoding_extract(args->encoding);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4028 message = oscar_encoding_to_utf8(encoding, args->msg, args->msglen);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4029 g_free(encoding);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4030 } else {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4031 if (g_utf8_validate(args->msg, args->msglen, NULL))
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4032 message = g_strdup(args->msg);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4033 }
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4034 }
2869
9b029055cfba [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
4035
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4036 if (args->reqclass & AIM_CAPS_CHAT) {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
4037 char *name;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4038 GHashTable *components;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4039
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4040 if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange) {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4041 g_free(message);
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
4042 return 1;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4043 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4044 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
4045 g_free);
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
4046 name = extract_name(args->info.chat.roominfo.name);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4047 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
4048 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
4049 serv_got_chat_invite(gc,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4050 name ? name : args->info.chat.roominfo.name,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4051 userinfo->sn,
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4052 message,
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4053 components);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4054 if (name)
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4055 g_free(name);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4056 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4057 /* BBB */
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4058 /* This is the first sendfile request where we need to notify the user that someone
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4059 * wants to send a file */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4060 if (args->status == AIM_RENDEZVOUS_PROPOSE
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4061 && (args->info.sendfile.reqnum == 0x0001)) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4062 /* Someone wants to send a file (or files) to us */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4063 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4064 struct aim_oft_info *oft_info;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4065 struct aim_rv_proxy_info *proxy_info = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4066 gboolean use_rv_proxy;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4067 int proxy_stage;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4068 int xfer_method;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4069 const char *proxy_ip = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4070
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4071 if (!args->cookie || !args->port ||
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4072 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
4073 !args->info.sendfile.totfiles || !args->reqclass) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4074 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4075 "%s tried to send you a file with incomplete "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4076 "information.\n", userinfo->sn);
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4077 g_free(message);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4078 return 1;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
4079 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4080
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4081 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4082 /* 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
4083 * 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
4084 * directories that look like 'dirname\*' -- arl */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4085 char *tmp = strrchr(args->info.sendfile.filename, '\\');
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4086 if (tmp && (tmp[1] == '*')) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4087 tmp[0] = '\0';
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4088 }
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4089 gaim_debug_warning("oscar",
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
4090 "We're receiving a whole directory! What fun! "
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
4091 "Especially since we don't support that!\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4092 }
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4093
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4094 /* Build the file transfer handle */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4095 xfer = gaim_xfer_new(gc->account, GAIM_XFER_RECEIVE, userinfo->sn);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4096
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4097 use_rv_proxy = gaim_prefs_get_bool("/plugins/prpl/oscar/use_rv_proxy");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4098
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4099 if(args->info.sendfile.use_proxy) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4100 /* The sender requested (stage 1) that we use a rendezvous proxy */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4101 xfer_method = AIM_XFER_PROXY;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4102 proxy_stage = AIM_XFER_PROXY_STG1;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4103 gaim_debug_info("oscar","using stage 1 proxy with ip: %s\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4104 args->proxyip, args->port);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4105 xfer->remote_ip = g_strdup(args->proxyip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4106 xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4107 proxy_info = aim_rv_proxy_createinfo(od->sess, args->cookie, args->port);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4108 } else if(use_rv_proxy) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4109 /* If the local user indicated that a rendezvous proxy is necessary
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4110 * start a stage 2 proxied transfer */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4111 gaim_debug_info("oscar","using stage 2 proxied transfer\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4112 xfer_method = AIM_XFER_PROXY;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4113 proxy_stage = AIM_XFER_PROXY_STG2;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4114 /* This hostname will be resolved by gaim_proxy_connect */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4115 xfer->remote_ip = g_strdup(AIM_RV_PROXY_SERVER_URL);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4116 xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4117 proxy_info = aim_rv_proxy_createinfo(od->sess, args->cookie, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4118 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4119 /* We are receiving a file directly with no rendezvous proxy */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4120 xfer_method = AIM_XFER_DIRECT;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4121 proxy_stage = AIM_XFER_PROXY_NONE;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4122 xfer->remote_ip = g_strdup(args->clientip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4123 xfer->remote_port = args->port;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4124 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4125
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4126 /* Use UTF8 so that the world will be a happier place */
11238
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4127 if (g_utf8_validate(args->info.sendfile.filename, -1,
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4128 NULL)) {
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4129 gaim_xfer_set_filename(xfer,
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4130 args->info.sendfile.filename);
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4131 } else {
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4132 gchar * utf8_filename = gaim_utf8_salvage(
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4133 args->info.sendfile.filename);
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4134 gaim_xfer_set_filename(xfer, utf8_filename);
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4135 g_free(utf8_filename);
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4136 }
04fd99debeb9 [gaim-migrate @ 13389]
Mark Doliner <mark@kingant.net>
parents: 11214
diff changeset
4137
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4138 gaim_xfer_set_size(xfer, args->info.sendfile.totsize);
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
4139
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4140 /* Ignore messages that start with <ICQ_COOL_FT> (XML that is sent along
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4141 * with ICQ sendfile requests) & <HTML> message that is sent with AOL file
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4142 * transfers (Note: this latter message is ignored only if whole message
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4143 * is <HTML>, but not if it starts with <HTML> */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4144 if(message && ( g_ascii_strncasecmp(message,"<ICQ_COOL_FT>",13) < 0
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4145 || g_ascii_strcasecmp(message,"<HTML>") == 0) ) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4146 gaim_debug_info("oscar","Ignoring file transfer message: %s\n", message);
11084
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
4147 g_free(message);
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
4148 message = NULL;
2c21bffa8200 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly>
parents: 11081
diff changeset
4149 }
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4150 gaim_xfer_set_message(xfer, message);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4151
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4152 /* Create the oscar-specific data */
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4153 oft_info = aim_oft_createinfo(od->sess, args->cookie, userinfo->sn, args->clientip,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4154 xfer->remote_port, 0, 0, NULL, AIM_XFER_RECV, xfer_method, proxy_stage);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4155 if(proxy_stage == AIM_XFER_PROXY_STG2 && proxy_ip) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4156 oft_info->proxyip = g_strdup(proxy_ip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4157 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4158 if (args->proxyip)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4159 oft_info->proxyip = g_strdup(args->proxyip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4160 if (args->verifiedip)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4161 oft_info->verifiedip = g_strdup(args->verifiedip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4162 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4163 oft_info->proxy_info = proxy_info;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4164 xfer->data = oft_info;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4165
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4166 /* Setup our I/O op functions */
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
4167 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4168 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
4169 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
4170 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
4171 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_recv);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4172
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4173 /* Keep track of this transfer for later */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4174 od->file_transfers = g_slist_append(od->file_transfers, xfer);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4175
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4176 /* Now perform the request */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4177 gaim_xfer_request(xfer);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4178 /* A secondary request has been sent to negotiate the connection method */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4179 } else if (args->status == AIM_RENDEZVOUS_PROPOSE && args->info.sendfile.reqnum == 0x0002) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4180 /* We have asked to send a file to someone else, but they sent us a reply request
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4181 * asking us to use an alternative method of connecting */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4182 GaimXfer *xfer;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4183 struct aim_oft_info *oft_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4184
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4185 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie))) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4186 oft_info = xfer->data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4187
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4188 /* Stop the listener connection */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4189 gaim_input_remove(xfer->watcher);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4190 aim_conn_kill(sess, &oft_info->conn); /* This is currently the listener */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4191
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4192 if(args->info.sendfile.use_proxy) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4193 gaim_debug_info("oscar",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4194 "received request for stage 2 rv proxy with ip: %s\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4195 args->proxyip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4196 oft_info->method = AIM_XFER_PROXY;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4197 oft_info->stage = AIM_XFER_PROXY_STG2;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4198
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4199 oft_info->proxy_info = aim_rv_proxy_createinfo(oft_info->sess,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4200 args->cookie, args->port);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4201 if(args->proxyip) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4202 if(xfer->remote_ip)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4203 g_free(xfer->remote_ip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4204 xfer->remote_ip = g_strdup(args->proxyip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4205 xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4206 oscar_xfer_init_recv(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4207 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4208 gaim_debug_warning("oscar",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4209 "stage 2 rv proxy file send: no proxy ip specified\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4210 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4211 } else if(args->clientip
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4212 && g_ascii_strcasecmp(args->clientip,"0.0.0.0") == 0)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4213 {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4214 gaim_debug_warning("oscar",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4215 "other client wants us to send stage 3 proxy info\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4216 oft_info->method = AIM_XFER_PROXY;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4217 oft_info->stage = AIM_XFER_PROXY_STG3;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4218
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4219 /* Clean useless data from oft_info */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4220 oft_info->clientip = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4221 oft_info->verifiedip = NULL;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4222
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4223 /* This hostname will be resolved in gaim_proxy_connect */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4224 xfer->remote_ip = g_strdup(AIM_RV_PROXY_SERVER_URL);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4225 xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4226
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4227 oft_info->proxy_info
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4228 = aim_rv_proxy_createinfo(od->sess, args->cookie, 0);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4229 oscar_xfer_init_recv(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4230 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4231 gaim_debug_info("oscar","received request to redirect transfer; clientip/verifiedip: %s / %s\n",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4232 args->clientip, args->verifiedip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4233 oft_info->method = AIM_XFER_REDIR;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4234 if (args->verifiedip)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4235 oft_info->verifiedip = g_strdup(args->verifiedip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4236 if (args->clientip) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4237 oft_info->clientip = g_strdup(args->clientip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4238 xfer->remote_ip = g_strdup(args->clientip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4239 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4240 xfer->remote_port = args->port;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4241
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4242 /* This file send will briefly follow file receive codepaths */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4243 oscar_xfer_init_recv(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4244 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4245 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4246 gaim_debug_warning("oscar","received file tranfer reply request: xfer not found\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4247 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4248 /* A THIRD request has been sent trying to figure out what connection method will be used
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4249 * to transfer this file */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4250 } else if (args->status == AIM_RENDEZVOUS_PROPOSE && args->info.sendfile.reqnum == 0x0003) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4251 /* We are receiving a file from someone. We sent a request to use a stage 3
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4252 * proxy. They did the initial proxy login and have sent us the info in a
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4253 * third file transfer request. */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4254 GaimXfer *xfer;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4255 struct aim_oft_info *oft_info;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4256
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4257 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie))) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4258 oft_info = xfer->data;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4259
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4260 /* We are receiving a file */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4261 gaim_debug_info("oscar",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4262 "other client sent us stage 3 proxy info\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4263
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4264 /* The following pieces of information should already have
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4265 * been set in oscar_xfer_ip_timeout, but we'll list them
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4266 * again just for clarity. */
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4267 oft_info->method = AIM_XFER_PROXY;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4268 oft_info->stage = AIM_XFER_PROXY_STG3;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4269
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4270 oft_info->proxy_info = aim_rv_proxy_createinfo(oft_info->sess,
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4271 args->cookie, args->port);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4272 if(args->proxyip) {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4273 if(xfer->remote_ip)
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4274 g_free(xfer->remote_ip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4275 xfer->remote_ip = g_strdup(args->proxyip);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4276 xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4277 oscar_xfer_init_recv(xfer);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4278 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4279 gaim_debug_warning("oscar",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4280 "stage 3 rv proxy file receive: no proxy ip specified\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4281 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4282 } else {
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4283 gaim_debug_warning("oscar","received file tranfer reply request: xfer not found\n");
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4284 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4285 } else if (args->status == AIM_RENDEZVOUS_CANCEL) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4286 /* The other user wants to cancel a file transfer */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4287 GaimXfer *xfer;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4288 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4289 "AAA - File transfer canceled by remote user\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4290 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
4291 gaim_xfer_cancel_remote(xfer);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4292 } else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4293 /*
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4294 * This gets sent by the receiver of a file
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4295 * as they connect directly to us. If we don't
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4296 * get this, then maybe a third party connected
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4297 * to us, and we shouldn't send them anything.
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4298 */
11214
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
4299 gaim_debug_info("oscar",
751de30689ef [gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly>
parents: 11185
diff changeset
4300 "AAA - received chan 2 AIM_RENDEZVOUS_ACCEPT; ignoring\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4301 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4302 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4303 "unknown rendezvous status!\n");
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4304 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4305 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
4306 } else if (args->reqclass & AIM_CAPS_TALK) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4307 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4308 gaim_buddy_icons_set_for_user(account, userinfo->sn,
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4309 args->info.icon.icon,
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
4310 args->info.icon.length);
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
4311 } else if (args->reqclass & AIM_CAPS_DIRECTIM) {
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4312 /* 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
4313 struct ask_direct *d = g_new0(struct ask_direct, 1);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4314 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
4315 char buf[256];
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4316
4212
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
4317 if (!args->verifiedip) {
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
4318 /* 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
4319 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4320 "directim kill blocked (%s)\n", userinfo->sn);
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4321 g_free(message);
4650
4938d12f6d48 [gaim-migrate @ 4961]
Mark Doliner <mark@kingant.net>
parents: 4649
diff changeset
4322 return 1;
4212
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
4323 }
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
4324
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4325 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4326 "%s received direct im request from %s (%s)\n",
10594
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
4327 username, userinfo->sn, args->verifiedip);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4328
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4329 d->gc = gc;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4330 d->sn = g_strdup(userinfo->sn);
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
4331 /* 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
4332 * Besides, if the clientip is wrong, we'll probably timeout faster,
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
4333 * and then ask them to connect to us. */
10594
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
4334 /*
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
4335 * 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
4336 * 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
4337 * 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
4338 * 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
4339 * 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
4340 * other person using.
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
4341 */
a78d9fac8183 [gaim-migrate @ 12009]
Mark Doliner <mark@kingant.net>
parents: 10589
diff changeset
4342 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
4343 memcpy(d->cookie, args->cookie, 8);
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4344 if (dim && !dim->connected && aim_odc_getcookie(dim->conn) && args->cookie &&
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4345 (!memcmp(aim_odc_getcookie(dim->conn), args->cookie, 8))) {
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4346
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4347 oscar_direct_im_destroy(od, dim);
8984
4623d24347d8 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
4348 d->donttryagain = TRUE;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4349 accept_direct_im_request(d);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4350 } else {
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
4351 if (dim && !dim->connected)
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4352 gaim_debug_warning("oscar", "DirectIM: received direct im request while "
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4353 "already connected to that buddy!");
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4354 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
4355
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4356 gaim_request_action(gc, NULL, buf,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4357 _("This requires a direct connection between "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4358 "the two computers and is necessary for IM "
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4359 "Images. Because your IP address will be "
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4360 "revealed, this may be considered a privacy "
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4361 "risk."),
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4362 - GAIM_DEFAULT_ACTION_NONE, d, 2,
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4363 _("Connect"), G_CALLBACK(accept_direct_im_request),
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4364 _("Cancel"), G_CALLBACK(destroy_direct_im_request));
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4365 /* FIXME: we should actually send a packet on cancel */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4366 }
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
4367 } else if (args->reqclass & AIM_CAPS_ICQSERVERRELAY) {
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
4368 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
4369 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4370 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4371 "Unknown reqclass %hu\n", args->reqclass);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4372 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4373
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4374 g_free(message);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
4375
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4376 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4377 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4378
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4379 /*
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4380 * Authorization Functions
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4381 * 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
4382 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4383 */
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4384 /* When you ask other people for authorization */
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4385 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
4386 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4387
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
4388 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4389 OscarData *od = gc->proto_data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4390 GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name);
12088
980c877bd238 [gaim-migrate @ 14385]
Mark Doliner <mark@kingant.net>
parents: 12049
diff changeset
4391 GaimGroup *group = gaim_buddy_get_group(buddy);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4392 if (buddy && group) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4393 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4394 "ssi: adding buddy %s to group %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4395 buddy->name, group->name);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4396 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
4397 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
4398 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
4399 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4400 }
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
4401 }
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
4402
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
4403 static void gaim_auth_request_msgprompt(struct name_data *data) {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
4404 gaim_request_input(data->gc, NULL, _("Authorization Request Message:"),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
4405 NULL, _("Please authorize me!"), TRUE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
4406 _("OK"), G_CALLBACK(gaim_auth_request),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
4407 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
4408 data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4409 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4410
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4411 static void gaim_auth_dontrequest(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4412 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4413
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
4414 if (g_list_find(gaim_connections_get_all(), gc)) {
8151
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
4415 /* Remove from local list */
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
4416 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
4417 gaim_blist_remove_buddy(b);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4418 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4419
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
4420 oscar_free_name_data(data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4421 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4422
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4423
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4424 static void gaim_auth_sendrequest(GaimConnection *gc, char *name) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4425 struct name_data *data = g_new(struct name_data, 1);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4426 GaimBuddy *buddy;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4427 gchar *dialog_msg, *nombre;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4428
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
4429 buddy = gaim_find_buddy(gc->account, name);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
4430 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
4431 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
4432 else
4830
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
4433 nombre = NULL;
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
4434
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4435 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
4436 data->gc = gc;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4437 data->name = g_strdup(name);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4438 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4439
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4440 gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4441 0, data, 2,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4442 _("Request Authorization"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4443 G_CALLBACK(gaim_auth_request_msgprompt),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4444 _("Cancel"), G_CALLBACK(gaim_auth_dontrequest));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4445
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4446 g_free(dialog_msg);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4447 g_free(nombre);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4448 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4449
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4450
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4451 static void gaim_auth_sendrequest_menu(GaimBlistNode *node, gpointer ignored) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4452 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4453 GaimConnection *gc;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4454
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4455 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4456
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4457 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4458 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4459 gaim_auth_sendrequest(gc, buddy->name);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4460 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4461
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4462 /* When other people ask you for authorization */
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4463 static void gaim_auth_grant(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4464 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4465
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
4466 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4467 OscarData *od = gc->proto_data;
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4468 aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4469 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4470
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
4471 oscar_free_name_data(data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4472 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4473
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4474 /* When other people ask you for authorization */
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4475 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
4476 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4477
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
4478 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4479 OscarData *od = gc->proto_data;
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4480 aim_ssi_sendauthreply(od->sess, data->name, 0x00, msg ? msg : _("No reason given."));
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4481 }
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
4482 }
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
4483
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
4484 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
4485 gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
4486 NULL, _("No reason given."), TRUE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
4487 _("OK"), G_CALLBACK(gaim_auth_dontgrant),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
4488 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
4489 data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4490 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4491
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4492 /* When someone sends you buddies */
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4493 static void gaim_icq_buddyadd(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4494 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4495
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
4496 if (g_list_find(gaim_connections_get_all(), gc)) {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
4497 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
4498 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
4499
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
4500 oscar_free_name_data(data);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4501 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4502
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
4503 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
4504 GaimConnection *gc = sess->aux_data;
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
4505 GaimAccount *account = gaim_connection_get_account(gc);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4506 gchar **msg1, **msg2;
6051
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
4507 int i, numtoks;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4508
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
4509 if (!args->type || !args->msg || !args->uin)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
4510 return 1;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4511
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4512 gaim_debug_info("oscar",
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
4513 "Received a channel 4 message of type 0x%02hhx.\n",
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
4514 args->type);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4515
9919
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
4516 /*
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
4517 * Split up the message at the delimeter character, then convert each
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
4518 * 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
4519 * 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
4520 * character in whatever encoding the message was sent in. Type 1
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
4521 * 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
4522 * 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
4523 * most 1 baby string.
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
4524 */
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
4525 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
4526 for (numtoks=0; msg1[numtoks]; numtoks++);
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
4527 msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4528 for (i=0; msg1[i]; i++) {
11920
52f27ffe68a5 [gaim-migrate @ 14211]
Mark Doliner <mark@kingant.net>
parents: 11910
diff changeset
4529 gaim_str_strip_char(msg1[i], '\r');
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
4530 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
4531 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4532 msg2[i] = NULL;
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4533
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
4534 switch (args->type) {
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4535 case 0x01: { /* MacICQ message or basic offline message */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4536 if (i >= 1) {
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
4537 gchar *uin = g_strdup_printf("%u", args->uin);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
4538 gchar *tmp;
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
4539
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
4540 /* 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
4541 tmp = g_markup_escape_text(msg2[0], -1);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
4542
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4543 if (t) { /* This is an offline message */
9680
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
4544 /* 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
4545 #ifdef HAVE_TM_GMTOFF
9724
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
4546 time_t now;
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
4547 struct tm *tm;
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
4548 now = time(NULL);
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
4549 tm = localtime(&now);
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
4550 t += tm->tm_gmtoff;
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
4551 #else
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
4552 # ifdef HAVE_TIMEZONE
9680
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
4553 tzset();
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
4554 t -= timezone;
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
4555 # endif
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
4556 #endif
8514
ed1f3a8f0ccd [gaim-migrate @ 9252]
Mark Doliner <mark@kingant.net>
parents: 8501
diff changeset
4557 serv_got_im(gc, uin, tmp, 0, t);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4558 } else { /* This is a message from MacICQ/Miranda */
8514
ed1f3a8f0ccd [gaim-migrate @ 9252]
Mark Doliner <mark@kingant.net>
parents: 8501
diff changeset
4559 serv_got_im(gc, uin, tmp, 0, time(NULL));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4560 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4561 g_free(uin);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
4562 g_free(tmp);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
4563 }
3316
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
4564 } break;
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
4565
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4566 case 0x04: { /* Someone sent you a URL */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4567 if (i >= 2) {
7385
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4568 if (msg2[1] != NULL) {
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4569 gchar *uin = g_strdup_printf("%u", args->uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4570 gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>",
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4571 msg2[1],
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4572 (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4573 serv_got_im(gc, uin, message, 0, time(NULL));
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4574 g_free(uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4575 g_free(message);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
4576 }
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4577 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4578 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4579
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4580 case 0x06: { /* Someone requested authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4581 if (i >= 6) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4582 struct name_data *data = g_new(struct name_data, 1);
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4583 gchar *sn = g_strdup_printf("%u", args->uin);
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4584 gchar *reason;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4585 gchar *dialog_msg;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4586
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4587 if (msg2[5] != NULL)
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4588 reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5]));
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4589 else
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4590 reason = g_strdup(_("No reason given."));
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4591
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4592 dialog_msg = g_strdup_printf(_("The user %u wants to add %s to their buddy list for the following reason:\n%s"),
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
4593 args->uin, gaim_account_get_username(gc->account), reason);
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4594 g_free(reason);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4595 gaim_debug_info("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
4596 "Received an authorization request from UIN %u\n",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4597 args->uin);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4598 data->gc = gc;
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
4599 data->name = sn;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4600 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4601
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4602 gaim_request_action(gc, NULL, _("Authorization Request"),
9948
b13013595c08 [gaim-migrate @ 10844]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
4603 dialog_msg, GAIM_DEFAULT_ACTION_NONE, data,
b13013595c08 [gaim-migrate @ 10844]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
4604 2, _("Authorize"),
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4605 G_CALLBACK(gaim_auth_grant),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4606 _("Deny"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4607 G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4608 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4609 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4610 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4611
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4612 case 0x07: { /* Someone has denied you authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4613 if (i >= 1) {
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4614 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
4615 gaim_notify_info(gc, NULL, _("ICQ authorization denied."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4616 dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4617 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4618 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4619 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4620
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4621 case 0x08: { /* Someone has granted you authorization */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4622 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
4623 gaim_notify_info(gc, NULL, "ICQ authorization accepted.",
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4624 dialog_msg);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4625 g_free(dialog_msg);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4626 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4627
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
4628 case 0x09: { /* Message from the Godly ICQ server itself, I think */
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
4629 if (i >= 5) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
4630 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
4631 gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
4632 g_free(dialog_msg);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
4633 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
4634 } break;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
4635
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4636 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
4637 if (i >= 6) {
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4638 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
4639 gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4640 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4641 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
4642 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
4643
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4644 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
4645 if (i >= 6) {
4308
b3a14484fc2f [gaim-migrate @ 4562]
Mark Doliner <mark@kingant.net>
parents: 4303
diff changeset
4646 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
4647 gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4648 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4649 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
4650 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
4651
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4652 case 0x12: {
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4653 /* 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
4654 /* Someone added you to their buddy list? */
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4655 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4656
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4657 case 0x13: { /* Someone has sent you some ICQ buddies */
7631
ea2d07ad05a9 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7621
diff changeset
4658 guint i, num;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4659 gchar **text;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
4660 text = g_strsplit(args->msg, "\376", 0);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4661 if (text) {
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4662 num = 0;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4663 for (i=0; i<strlen(text[0]); i++)
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4664 num = num*10 + text[0][i]-48;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4665 for (i=0; i<num; i++) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4666 struct name_data *data = g_new(struct name_data, 1);
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4667 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
4668 data->gc = gc;
4790
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
4669 data->name = g_strdup(text[i*2+1]);
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
4670 data->nick = g_strdup(text[i*2+2]);
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4671
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
4672 gaim_request_action(gc, NULL, message,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4673 _("Do you want to add this buddy "
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4674 "to your buddy list?"),
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
4675 GAIM_DEFAULT_ACTION_NONE, data, 2,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4676 _("Add"), G_CALLBACK(gaim_icq_buddyadd),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
4677 _("Decline"), G_CALLBACK(oscar_free_name_data));
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4678 g_free(message);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4679 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4680 g_strfreev(text);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4681 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4682 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4683
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4684 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
4685 /* This is boring and silly. */
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4686 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
4687
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4688 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4689 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4690 "Received a channel 4 message of unknown type "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4691 "(type 0x%02hhx).\n", args->type);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4692 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4693 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4694
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4695 g_strfreev(msg1);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4696 g_strfreev(msg2);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
4697
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4698 return 1;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4699 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4700
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4701 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
4702 fu16_t channel;
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4703 int ret = 0;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4704 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4705 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4706
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4707 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4708 channel = (fu16_t)va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4709 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4710
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4711 switch (channel) {
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4712 case 1: { /* standard message */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4713 struct aim_incomingim_ch1_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4714 args = va_arg(ap, struct aim_incomingim_ch1_args *);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4715 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4716 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4717
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
4718 case 2: { /* rendezvous */
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4719 struct aim_incomingim_ch2_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4720 args = va_arg(ap, struct aim_incomingim_ch2_args *);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4721 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4722 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4723
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4724 case 4: { /* ICQ */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4725 struct aim_incomingim_ch4_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4726 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
4727 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4728 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4729
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4730 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4731 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4732 "ICBM received on unsupported channel (channel "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4733 "0x%04hx).", channel);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
4734 } break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4735 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4736
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4737 va_end(ap);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4738
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4739 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4740 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4741
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4742 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
4743 GaimConnection *gc = sess->aux_data;
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4744 GaimAccount *account = gaim_connection_get_account(gc);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4745 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4746 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4747 fu16_t chan, nummissed, reason;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
4748 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4749
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4750 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4751 chan = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4752 userinfo = va_arg(ap, aim_userinfo_t *);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4753 nummissed = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4754 reason = (fu16_t)va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4755 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4756
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4757 switch(reason) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4758 case 0: /* Invalid (0) */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4759 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4760 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4761 "You missed %hu message from %s because it was invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4762 "You missed %hu messages from %s because they were invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4763 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4764 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4765 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4766 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4767 case 1: /* Message too large */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4768 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4769 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4770 "You missed %hu message from %s because it was too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4771 "You missed %hu messages from %s because they were too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4772 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4773 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4774 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4775 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4776 case 2: /* Rate exceeded */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4777 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4778 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4779 "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
4780 "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
4781 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4782 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4783 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4784 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4785 case 3: /* Evil Sender */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4786 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4787 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4788 "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
4789 "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
4790 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4791 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4792 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
4793 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4794 case 4: /* Evil Receiver */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4795 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4796 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4797 "You missed %hu message from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4798 "You missed %hu messages from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4799 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4800 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4801 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4802 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4803 default:
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4804 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4805 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4806 "You missed %hu message from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4807 "You missed %hu messages from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
4808 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4809 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4810 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4811 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4812 }
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4813
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4814 if (!gaim_conv_present_error(userinfo->sn, account, buf))
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
4815 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4816 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4817
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4818 return 1;
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
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
4821 static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const guchar *cookie) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4822 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4823 OscarData *od = gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4824
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4825 /* BBB */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4826 switch (reason) {
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4827 case 3: { /* Decline sendfile. */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4828 GaimXfer *xfer;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4829 struct oscar_direct_im *dim;
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4830
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4831 gaim_debug_info("oscar",
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
4832 "AAA - Other user declined some sort of direct "
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4833 "connect attempt (automaticly?)\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4834 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
4835 gaim_xfer_cancel_remote(xfer);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4836 else if ((dim = oscar_direct_im_find(od, who))) {
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4837 /* AAA should use find by cookie or something here */
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4838 oscar_direct_im_disconnect(od, dim);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
4839 }
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4840 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4841
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4842 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4843 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4844 "Received an unknown rendezvous client auto-response "
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4845 "from %s. Type 0x%04hx\n", who, reason);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4846 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4847
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4848 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4849
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4850 return 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4851 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4852
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
4853 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
4854 GaimConnection *gc = sess->aux_data;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4855
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4856 switch(reason) {
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4857 case 0x0003: { /* Reply from an ICQ status message request */
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4858 char *title, *statusmsg, **splitmsg, *dialogmsg;
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4859
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4860 title = g_strdup_printf(_("Info for %s"), who);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4861
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4862 /* 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
4863 statusmsg = oscar_icqstatus(state);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4864 splitmsg = g_strsplit(msg, "\r\n", 0);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4865 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
4866 g_free(statusmsg);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4867 g_strfreev(splitmsg);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4868
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
4869 gaim_notify_userinfo(gc, who, dialogmsg, NULL, NULL);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4870
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4871 g_free(title);
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
4872 g_free(dialogmsg);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4873 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4874
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4875 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4876 gaim_debug_warning("oscar",
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4877 "Received an unknown client auto-response from %s. "
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4878 "Type 0x%04hx\n", who, reason);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4879 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4880 } /* end of switch */
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4881
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4882 return 0;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4883 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4884
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4885 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
4886 va_list ap;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4887 fu16_t chan, reason;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4888 char *who;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4889
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4890 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4891 chan = (fu16_t)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4892 who = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4893 reason = (fu16_t)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4894
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
4895 if (chan == 0x0002) { /* File transfer declined */
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
4896 guchar *cookie = va_arg(ap, guchar *);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4897 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
4898 } else if (chan == 0x0004) { /* ICQ message */
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4899 fu32_t state = 0;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4900 char *msg = NULL;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4901 if (reason == 0x0003) {
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
4902 state = va_arg(ap, fu32_t);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4903 msg = va_arg(ap, char *);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4904 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4905 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4906 }
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
4907
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4908 va_end(ap);
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4909
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4910 return 1;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4911 }
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4912
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4913 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
4914 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4915 fu16_t reason;
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4916 char *m;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4917
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4918 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4919 reason = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4920 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4921
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4922 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4923 "snac threw error (reason 0x%04hx: %s)\n", reason,
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4924 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4925
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4926 m = g_strdup_printf(_("SNAC threw error: %s\n"),
5411
2c4188300aba [gaim-migrate @ 5787]
Mark Doliner <mark@kingant.net>
parents: 5402
diff changeset
4927 reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error"));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4928 gaim_notify_error(sess->aux_data, NULL, m, NULL);
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4929 g_free(m);
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
4930
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4931 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4932 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4933
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4934 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
4935 GaimConnection *gc = sess->aux_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4936 #if 0
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4937 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4938 GaimXfer *xfer;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4939 #endif
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4940 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4941 fu16_t reason;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4942 char *data, *buf;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4943
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4944 va_start(ap, fr);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4945 reason = (fu16_t)va_arg(ap, unsigned int);
3752
b32474e522fa [gaim-migrate @ 3890]
Luke Schierer <lschiere@pidgin.im>
parents: 3730
diff changeset
4946 data = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4947 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4948
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4949 gaim_debug_error("oscar",
10130
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
4950 "Message error with data %s and reason %hu\n",
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
4951 (data != NULL ? data : ""), reason);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4952
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4953 /* BBB */
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4954 #if 0
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4955 /* If this was a file transfer request, data is a cookie */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4956 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
4957 gaim_xfer_cancel_remote(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4958 return 1;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4959 }
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4960 #endif
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4961
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4962 /* Data is assumed to be the destination sn */
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4963 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
4964 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
4965 g_free(buf);
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4966 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
4967 gaim_notify_error(sess->aux_data, NULL, buf,
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4968 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4969 }
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4970 g_free(buf);
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
4971
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4972 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4973 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4974
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4975 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
4976 GaimConnection *gc = sess->aux_data;
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4977 va_list ap;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4978 fu16_t type1, type2;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4979 char *sn;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4980
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4981 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4982 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4983 sn = va_arg(ap, char *);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4984 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4985 va_end(ap);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4986
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4987 switch (type2) {
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4988 case 0x0000: { /* Text has been cleared */
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4989 serv_got_typing_stopped(gc, sn);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4990 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4991
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4992 case 0x0001: { /* Paused typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4993 serv_got_typing(gc, sn, 0, GAIM_TYPED);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4994 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4995
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4996 case 0x0002: { /* Typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4997 serv_got_typing(gc, sn, 0, GAIM_TYPING);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4998 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4999
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5000 default: {
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
5001 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
5002 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5003 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5004
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5005 return 1;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5006 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5007
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
5008 /*
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
5009 * 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
5010 * happens when you request info of someone who is offline.
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
5011 */
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5012 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
5013 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5014 va_list ap;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
5015 fu16_t reason;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5016 char *destn;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5017
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5018 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5019 reason = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5020 destn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5021 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5022
7781
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
5023 if (destn == NULL)
7793
61b5d682ddb4 [gaim-migrate @ 8439]
Mark Doliner <mark@kingant.net>
parents: 7781
diff changeset
5024 return 1;
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
5025
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
5026 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
5027 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
5028 g_free(buf);
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
5029 buf = g_strdup_printf(_("User information for %s unavailable:"), destn);
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
5030 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
5031 }
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
5032 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5033
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5034 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5035 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5036
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5037 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
5038 GaimConnection *gc = sess->aux_data;
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5039 GaimAccount *account = gaim_connection_get_account(gc);
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
5040 OscarData *od = gc->proto_data;
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5041 GString *str;
11532
57439a383f4f [gaim-migrate @ 13781]
Luke Schierer <lschiere@pidgin.im>
parents: 11531
diff changeset
5042 gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL;
4791
e737e3e08b4a [gaim-migrate @ 5111]
Mark Doliner <mark@kingant.net>
parents: 4790
diff changeset
5043 va_list ap;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5044 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5045
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5046 va_start(ap, fr);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5047 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5048 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5049
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5050 str = g_string_new("");
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5051 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
5052 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
5053
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5054 if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
5055 time_t t = userinfo->onlinesince - od->timeoffset;
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5056 oscar_string_append(str, "\n<br>", _("Online Since"), ctime(&t));
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5057 }
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5058
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5059 if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
5060 time_t t = userinfo->membersince - od->timeoffset;
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5061 oscar_string_append(str, "\n<br>", _("Member Since"), ctime(&t));
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5062 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5063
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5064 if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5065 tmp = gaim_str_seconds_to_string(userinfo->idletime*60);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5066 oscar_string_append(str, "\n<br>", _("Idle"), tmp);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5067 g_free(tmp);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5068 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5069
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5070 oscar_string_append_info(gc, str, "\n<br>", NULL, userinfo);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5071
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5072 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
5073 tmp = oscar_encoding_extract(userinfo->away_encoding);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5074 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
5075 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5076 if (away_utf8 != NULL) {
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5077 g_string_append_printf(str, "\n<hr>%s<br>", away_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5078 g_free(away_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
5079 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5080 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5081
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5082 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
5083 tmp = oscar_encoding_extract(userinfo->info_encoding);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5084 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
5085 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5086 if (info_utf8 != NULL) {
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5087 g_string_append_printf(str, "\n<hr>%s<br>", info_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5088 g_free(info_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
5089 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5090 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5091
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5092 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
5093 g_string_free(str, TRUE);
11920
52f27ffe68a5 [gaim-migrate @ 14211]
Mark Doliner <mark@kingant.net>
parents: 11910
diff changeset
5094 gaim_str_strip_char(tmp, '\r');
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
5095 gaim_notify_userinfo(gc, userinfo->sn, tmp, NULL, NULL);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5096 g_free(tmp);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5097
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5098 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5099 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5100
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5101 static int gaim_got_infoblock(aim_session_t *sess, aim_frame_t *fr, ...)
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5102 {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5103 GaimConnection *gc = sess->aux_data;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5104 OscarData *od = gc->proto_data;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5105 GaimBuddy *b;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5106 GaimPresence *presence;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5107 GaimStatus *active_status;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5108 gchar *message = NULL;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5109
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5110 va_list ap;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5111 aim_userinfo_t *userinfo;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5112
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5113 va_start(ap, fr);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5114 userinfo = va_arg(ap, aim_userinfo_t *);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5115 va_end(ap);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5116
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5117 b = gaim_find_buddy(gaim_connection_get_account(gc), userinfo->sn);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5118 if (b == NULL)
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5119 return 1;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5120
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5121 presence = gaim_buddy_get_presence(b);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5122 active_status = gaim_presence_get_active_status(presence);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5123
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5124 if (gaim_status_type_get_primitive(gaim_status_get_type(active_status)) == GAIM_STATUS_AVAILABLE) {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5125 struct buddyinfo *bi;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5126
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5127 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name));
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5128 if ((bi != NULL) && (bi->availmsg != NULL))
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5129 message = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5130 } else {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5131 if ((userinfo != NULL) && (userinfo->flags & AIM_FLAG_AWAY) &&
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5132 (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5133 gchar *charset = oscar_encoding_extract(userinfo->away_encoding);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5134 message = oscar_encoding_to_utf8(charset, userinfo->away, userinfo->away_len);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5135 g_free(charset);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5136 }
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5137 }
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5138
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5139 gaim_status_set_attr_string(active_status, "message", message);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5140 g_free(message);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5141
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5142 gaim_blist_update_buddy_status(b, active_status);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5143
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5144 return 1;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5145 }
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5146
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5147 static gboolean gaim_reqinfo_timeout_cb(void *data)
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5148 {
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5149 aim_session_t *sess = data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5150 GaimConnection *gc = sess->aux_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5151 OscarData *od = (OscarData *)gc->proto_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5152
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5153 aim_locate_dorequest(data);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5154 od->getinfotimer = 0;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5155
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5156 return FALSE;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5157 }
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5158
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5159 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
5160 {
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5161 GaimConnection *gc = sess->aux_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5162 OscarData *od = (OscarData *)gc->proto_data;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5163
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5164 /*
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5165 * 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
5166 * 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
5167 * too quickly.
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5168 */
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5169 if (od->getinfotimer == 0)
11670
9f3129911c95 [gaim-migrate @ 13956]
Mark Doliner <mark@kingant.net>
parents: 11651
diff changeset
5170 od->getinfotimer = gaim_timeout_add(10000, gaim_reqinfo_timeout_cb, sess);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5171
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5172 return 1;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5173 }
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5174
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5175 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
5176 {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5177 char *msg;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5178 fu16_t id;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5179 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5180
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5181 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5182 id = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5183 msg = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5184 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5185
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5186 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5187 "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
59b0377d18aa [gaim-migrate @ 2102]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
5188 if (id < 4)
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5189 gaim_notify_warning(sess->aux_data, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5190 _("Your AIM connection may be lost."), NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5191
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5192 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5193 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5194
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5195 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
5196 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5197 fu16_t type;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5198 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5199 OscarData *od = (OscarData *)gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5200
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5201 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5202 type = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5203
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5204 switch(type) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5205 case 0x0002: {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5206 fu8_t maxrooms;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5207 struct aim_chat_exchangeinfo *exchanges;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5208 int exchangecount, i;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5209
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5210 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5211 exchangecount = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5212 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5213
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5214 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5215 "chat info: Chat Rights:\n");
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5216 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5217 "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5218 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5219 "chat info: \tExchange List: (%d total)\n", exchangecount);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5220 for (i = 0; i < exchangecount; i++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5221 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5222 "chat info: \t\t%hu %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5223 exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5224 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5225 struct create_room *cr = od->create_rooms->data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5226 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5227 "creating room %s\n", cr->name);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
5228 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
5229 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5230 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
5231 g_free(cr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5232 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5233 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5234 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5235 case 0x0008: {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5236 char *fqcn, *name, *ck;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5237 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5238 fu8_t createperms;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5239 fu32_t createtime;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5240
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5241 fqcn = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5242 instance = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5243 exchange = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5244 flags = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5245 createtime = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5246 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5247 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5248 createperms = (fu8_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5249 unknown = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5250 name = va_arg(ap, char *);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5251 ck = va_arg(ap, char *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5252
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5253 gaim_debug_misc("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
5254 "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
5255 fqcn,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5256 exchange, instance, flags,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5257 createtime,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5258 maxmsglen, maxoccupancy, createperms, unknown,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5259 name, ck);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5260 aim_chat_join(od->sess, od->conn, exchange, ck, instance);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5261 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5262 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5263 default:
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5264 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5265 "chatnav info: unknown type (%04hx)\n", type);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5266 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5267 }
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5268
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5269 va_end(ap);
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5270
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5271 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5272 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5273
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5274 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
5275 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5276 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5277 aim_userinfo_t *info;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5278 GaimConnection *g = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5279
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5280 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5281
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5282 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5283 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5284 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5285 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5286
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5287 c = find_oscar_chat_by_conn(g, fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5288 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5289 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5290
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5291 for (i = 0; i < count; i++)
9846
c28d5b45624e [gaim-migrate @ 10724]
Mark Doliner <mark@kingant.net>
parents: 9831
diff changeset
5292 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
5293
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5294 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5295 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5296
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5297 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
5298 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5299 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5300 aim_userinfo_t *info;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5301 GaimConnection *g = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5302
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5303 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5304
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5305 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5306 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5307 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5308 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5309
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5310 c = find_oscar_chat_by_conn(g, fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5311 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5312 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5313
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5314 for (i = 0; i < count; i++)
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
5315 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
5316
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5317 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5318 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5319
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5320 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
5321 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5322 aim_userinfo_t *userinfo;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5323 struct aim_chat_roominfo *roominfo;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5324 char *roomname;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5325 int usercount;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5326 char *roomdesc;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5327 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5328 fu32_t creationtime;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5329 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5330 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
5331
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5332 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5333 roominfo = va_arg(ap, struct aim_chat_roominfo *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5334 roomname = va_arg(ap, char *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5335 usercount= va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5336 userinfo = va_arg(ap, aim_userinfo_t *);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5337 roomdesc = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5338 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5339 creationtime = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5340 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5341 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5342 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5343 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5344 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5345
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5346 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5347 "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5348 maxmsglen, maxvisiblemsglen);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5349
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5350 ccon->maxlen = maxmsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5351 ccon->maxvis = maxvisiblemsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5352
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5353 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5354 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5355
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5356 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
5357 GaimConnection *gc = sess->aux_data;
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
5358 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
5359 gchar *utf8;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5360 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5361 aim_userinfo_t *info;
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
5362 int len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5363 char *msg;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5364 char *charset;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5365
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5366 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5367 info = va_arg(ap, aim_userinfo_t *);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5368 len = va_arg(ap, int);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5369 msg = va_arg(ap, char *);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5370 charset = va_arg(ap, char *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5371 va_end(ap);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5372
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
5373 utf8 = oscar_encoding_to_utf8(charset, msg, len);
8667
493e0df74180 [gaim-migrate @ 9419]
Mark Doliner <mark@kingant.net>
parents: 8666
diff changeset
5374 if (utf8 == NULL)
493e0df74180 [gaim-migrate @ 9419]
Mark Doliner <mark@kingant.net>
parents: 8666
diff changeset
5375 /* The conversion failed! */
8668
e71eef9dc37f [gaim-migrate @ 9420]
Mark Doliner <mark@kingant.net>
parents: 8667
diff changeset
5376 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
5377 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
5378 g_free(utf8);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5379
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5380 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5381 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5382
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5383 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
5384 va_list ap;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5385 GaimConnection *gc = sess->aux_data;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5386 struct aim_emailinfo *emailinfo;
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
5387 int havenewmail;
7297
ceda503e55a6 [gaim-migrate @ 7881]
Sean Egan <seanegan@gmail.com>
parents: 7285
diff changeset
5388 char *alertitle, *alerturl;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5389
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5390 va_start(ap, fr);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5391 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
5392 havenewmail = va_arg(ap, int);
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
5393 alertitle = va_arg(ap, char *);
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
5394 alerturl = va_arg(ap, char *);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5395 va_end(ap);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5396
9661
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
5397 if ((emailinfo != NULL) && gaim_account_get_check_mail(gc->account)) {
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
5398 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
5399 emailinfo->domain ? "@" : "",
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
5400 emailinfo->domain ? emailinfo->domain : "");
5542
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
5401 if (emailinfo->unread && havenewmail)
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
5402 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
5403 g_free(to);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5404 }
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
5405
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
5406 if (alertitle)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5407 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
5408
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5409 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5410 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
5411
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5412 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
5413 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5414 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5415 char *sn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5416
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5417 sn = od->requesticon->data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5418 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5419 "removing %s from hash table\n", sn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5420 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5421 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5422
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5423 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
5424 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
5425 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5426
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5427 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5428 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5429
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5430 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
5431 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5432 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5433 GSList *cur;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5434 va_list ap;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5435 char *sn;
11024
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5436 fu8_t iconcsumtype, *iconcsum, *icon;
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
5437 fu16_t iconcsumlen, iconlen;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5438
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5439 va_start(ap, fr);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5440 sn = va_arg(ap, char *);
11024
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5441 iconcsumtype = va_arg(ap, int);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
5442 iconcsum = va_arg(ap, fu8_t *);
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
5443 iconcsumlen = va_arg(ap, int);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5444 icon = va_arg(ap, fu8_t *);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5445 iconlen = va_arg(ap, int);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5446 va_end(ap);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5447
11024
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5448 /*
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5449 * Some AIM clients will send a blank GIF image with iconlen 90 when
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5450 * no icon is set. Ignore these.
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5451 */
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5452 if ((iconlen > 0) && (iconlen != 90)) {
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
5453 char *b16;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5454 GaimBuddy *b = gaim_find_buddy(gc->account, sn);
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
5455 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
5456 sn, icon, iconlen);
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
5457 b16 = gaim_base16_encode(iconcsum, iconcsumlen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
5458 if (b16) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
5459 gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5460 g_free(b16);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
5461 }
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
5462 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5463
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5464 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5465 while (cur) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5466 char *cursn = cur->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5467 if (!aim_sncmp(cursn, sn)) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5468 od->requesticon = g_slist_remove(od->requesticon, cursn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5469 free(cursn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5470 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5471 } else
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5472 cur = cur->next;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5473 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5474
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5475 if (od->icontimer)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
5476 gaim_timeout_remove(od->icontimer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8266
diff changeset
5477 od->icontimer = gaim_timeout_add(250, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5478
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5479 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5480 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5481
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5482 static gboolean gaim_icon_timerfunc(gpointer data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5483 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5484 OscarData *od = gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5485 aim_userinfo_t *userinfo;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5486 aim_conn_t *conn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5487
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5488 conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5489 if (!conn) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5490 if (!od->iconconnecting) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5491 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5492 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5493 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5494 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5495 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5496
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5497 if (od->set_icon) {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5498 struct stat st;
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5499 char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc)));
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5500 if (iconfile == NULL) {
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
5501 aim_ssi_delicon(od->sess);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
5502 } else if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
5503 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
5504 FILE *file = g_fopen(iconfile, "rb");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5505 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
5506 /* XXX - Use g_file_get_contents()? */
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5507 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5508 fclose(file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5509 gaim_debug_info("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5510 "Uploading icon to icon server\n");
6879
594682101ba6 [gaim-migrate @ 7425]
Mark Doliner <mark@kingant.net>
parents: 6873
diff changeset
5511 aim_bart_upload(od->sess, buf, st.st_size);
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5512 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5513 gaim_debug_error("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5514 "Can't open buddy icon file!\n");
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5515 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5516 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5517 gaim_debug_error("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5518 "Can't stat buddy icon file!\n");
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5519 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5520 g_free(iconfile);
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5521 od->set_icon = FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5522 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5523
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5524 if (!od->requesticon) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5525 gaim_debug_misc("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5526 "no more icons to request\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5527 return FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5528 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5529
7045
237ad253dd34 [gaim-migrate @ 7608]
Mark Doliner <mark@kingant.net>
parents: 7038
diff changeset
5530 userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5531 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) {
11024
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
5532 aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsumtype, userinfo->iconcsum, userinfo->iconcsumlen);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5533 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5534 } else {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5535 char *sn = od->requesticon->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5536 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5537 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5538 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5539
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5540 return TRUE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5541 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
5542
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5543 /*
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5544 * 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
5545 */
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5546 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
5547 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5548 fu16_t type;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5549 char *sn;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5550
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5551 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5552 type = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5553 sn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5554 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5555
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5556 gaim_debug_info("oscar", "Sent message to %s.\n", sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5557
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5558 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5559 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5560
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5561 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
5562 static const char *codes[5] = {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5563 "invalid",
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5564 "change",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5565 "warning",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5566 "limit",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5567 "limit cleared",
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5568 };
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5569 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5570 fu16_t code, rateclass;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5571 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5572
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5573 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5574 code = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5575 rateclass= (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5576 windowsize = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5577 clear = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5578 alert = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5579 limit = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5580 disconnect = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5581 currentavg = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
5582 maxavg = va_arg(ap, fu32_t);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5583 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5584
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5585 gaim_debug_misc("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
5586 "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
5587 "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
5588 (code < 5) ? codes[code] : codes[0],
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5589 rateclass,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5590 currentavg, maxavg,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5591 alert, clear,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5592 limit, disconnect,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5593 windowsize);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5594
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5595 /* XXX fix these values */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5596 if (code == AIM_RATE_CODE_CHANGE) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5597 if (currentavg >= clear)
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5598 aim_conn_setlatency(fr->conn, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5599 } else if (code == AIM_RATE_CODE_WARNING) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5600 aim_conn_setlatency(fr->conn, windowsize/4);
2909
48ec70928d7f [gaim-migrate @ 2922]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2906
diff changeset
5601 } else if (code == AIM_RATE_CODE_LIMIT) {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5602 gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."),
6040
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
5603 _("The last action you attempted could not be "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
5604 "performed because you are over the rate limit. "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
5605 "Please wait 10 seconds and try again."));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5606 aim_conn_setlatency(fr->conn, windowsize/2);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5607 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5608 aim_conn_setlatency(fr->conn, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5609 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5610
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5611 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5612 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5613
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5614 static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5615 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5616 fu16_t newevil;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5617 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5618
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5619 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5620 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
5621 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5622 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5623
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5624 #ifdef CRAZY_WARNING
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5625 gaim_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5626 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5627
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5628 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5629 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5630
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5631 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
5632 int warning_level;
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5633 va_list ap;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5634 aim_userinfo_t *info;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5635
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5636 va_start(ap, fr);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5637 info = va_arg(ap, aim_userinfo_t *);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5638 va_end(ap);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5639
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5640 /*
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5641 * What's with the + 0.5?
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5642 * The 0.5 is basically poor-man's rounding. Normally
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5643 * casting "13.7" to an int will truncate to "13," but
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5644 * with 13.7 + 0.5 = 14.2, which becomes "14" when
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5645 * truncated.
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5646 */
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
5647 warning_level = info->warnlevel/10.0 + 0.5;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
5648
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5649 #ifdef CRAZY_WARNING
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5650 gaim_presence_set_warning_level(presence, warning_level);
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
5651 #endif
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5652
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5653 return 1;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5654 }
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
5655
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5656 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
5657 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5658 OscarData *od = gc->proto_data;
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5659 va_list ap;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5660 fu16_t code;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5661 char *msg;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5662
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5663 va_start(ap, fr);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5664 code = (fu16_t)va_arg(ap, int);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5665 msg = va_arg(ap, char *);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5666 va_end(ap);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5667
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
5668 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
5669 code, (msg != NULL ? msg : ""));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5670
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5671 g_return_val_if_fail(fr != NULL, 1);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5672 g_return_val_if_fail(fr->conn != NULL, 1);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5673
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5674 if (fr->conn->type == AIM_CONN_TYPE_BOS) {
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
5675 if (code == 0x0001) {
6113
30d4c432101c [gaim-migrate @ 6575]
Mark Doliner <mark@kingant.net>
parents: 6066
diff changeset
5676 gc->wants_to_die = TRUE;
10715
c6bf026fcab9 [gaim-migrate @ 12309]
Mark Doliner <mark@kingant.net>
parents: 10683
diff changeset
5677 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
5678 } else {
5579
e0146fcc4718 [gaim-migrate @ 5983]
Sean Egan <seanegan@gmail.com>
parents: 5577
diff changeset
5679 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
5680 }
4666
f8895ad921ee [gaim-migrate @ 4977]
Mark Doliner <mark@kingant.net>
parents: 4665
diff changeset
5681 od->killme = TRUE;
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5682 } else if (fr->conn->type == AIM_CONN_TYPE_CHAT) {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5683 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5684 GaimConversation *conv;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5685
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5686 cc = find_oscar_chat_by_conn(gc, fr->conn);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5687 conv = gaim_find_chat(gc, cc->id);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5688
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5689 if (conv != NULL)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5690 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5691 gchar *buf;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5692 buf = g_strdup_printf(_("You have been disconnected from chat "
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5693 "room %s."), cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5694 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5695 g_free(buf);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5696 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5697 oscar_chat_kill(gc, cc);
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5698 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5699
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5700 return 1;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5701 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
5702
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
5703 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
5704 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5705
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
5706 aim_reqpersonalinfo(sess, fr->conn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5707
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5708 gaim_debug_info("oscar", "ssi: requesting rights and list\n");
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
5709 aim_ssi_reqrights(sess);
6350
34c07f5f34a0 [gaim-migrate @ 6849]
Mark Doliner <mark@kingant.net>
parents: 6318
diff changeset
5710 aim_ssi_reqdata(sess);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5711
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5712 aim_locate_reqrights(sess);
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
5713 aim_buddylist_reqrights(sess, fr->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5714 aim_im_reqparams(sess);
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5715 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
5716
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5717 gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS);
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5718
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5719 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5720 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5721
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
5722 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
5723 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5724 OscarData *od = gc->proto_data;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5725
6905
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
5726 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
5727 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
5728 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
5729
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
5730 aim_clientready(sess, fr->conn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5731 gaim_debug_info("oscar", "connected to admin\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5732
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5733 if (od->chpass) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5734 gaim_debug_info("oscar", "changing password\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
5735 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5736 g_free(od->oldp);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5737 od->oldp = NULL;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5738 g_free(od->newp);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5739 od->newp = NULL;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5740 od->chpass = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5741 }
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5742 if (od->setnick) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5743 gaim_debug_info("oscar", "formatting screen name\n");
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5744 aim_admin_setnick(sess, fr->conn, od->newsn);
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5745 g_free(od->newsn);
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5746 od->newsn = NULL;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5747 od->setnick = FALSE;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5748 }
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5749 if (od->conf) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5750 gaim_debug_info("oscar", "confirming account\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
5751 aim_admin_reqconfirm(sess, fr->conn);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5752 od->conf = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5753 }
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5754 if (od->reqemail) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5755 gaim_debug_info("oscar", "requesting email\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
5756 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5757 od->reqemail = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5758 }
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5759 if (od->setemail) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5760 gaim_debug_info("oscar", "setting email\n");
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5761 aim_admin_setemail(sess, fr->conn, od->email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5762 g_free(od->email);
5497
3c7748b24410 [gaim-migrate @ 5893]
Mark Doliner <mark@kingant.net>
parents: 5493
diff changeset
5763 od->email = NULL;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5764 od->setemail = FALSE;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5765 }
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
5766
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5767 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5768 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5769
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5770 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
5771 struct aim_icbmparameters *params;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5772 va_list ap;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5773
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5774 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5775 params = va_arg(ap, struct aim_icbmparameters *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5776 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5777
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
5778 /* 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
5779 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
5780 "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
5781 params->maxchan, params->flags, params->maxmsglen,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5782 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5783 params->minmsginterval);
2427
5bc3b39fc0a5 [gaim-migrate @ 2440]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2421
diff changeset
5784 */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5785
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5786 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
5787 params->flags = 0x0000000b;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5788 params->maxmsglen = 8000;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5789 params->minmsginterval = 0;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5790
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5791 aim_im_setparams(sess, params);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5792
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5793 return 1;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5794 }
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5795
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5796 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
5797 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5798 GaimConnection *gc = sess->aux_data;
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
5799 GaimAccount *account = gaim_connection_get_account(gc);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5800 OscarData *od = (OscarData *)gc->proto_data;
5306
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
5801 va_list ap;
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
5802 fu16_t maxsiglen;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5803
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5804 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5805 maxsiglen = (fu16_t) va_arg(ap, int);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5806 va_end(ap);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5807
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5808 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5809 "locate rights: max sig len = %d\n", maxsiglen);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5810
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5811 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5812
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5813 if (od->icq)
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5814 aim_locate_setcaps(od->sess, caps_icq);
5301
d846a933299c [gaim-migrate @ 5673]
Mark Doliner <mark@kingant.net>
parents: 5300
diff changeset
5815 else
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5816 aim_locate_setcaps(od->sess, caps_aim);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5817 oscar_set_info_and_status(account, TRUE, account->user_info, TRUE,
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5818 gaim_account_get_active_status(account));
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5819
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5820 return 1;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5821 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5822
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5823 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
5824 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5825 fu16_t maxbuddies, maxwatchers;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5826 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5827 OscarData *od = (OscarData *)gc->proto_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5828
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5829 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5830 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5831 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5832 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5833
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5834 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5835 "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
5836
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5837 od->rights.maxbuddies = (guint)maxbuddies;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5838 od->rights.maxwatchers = (guint)maxwatchers;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5839
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5840 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5841 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5842
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5843 static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) {
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5844 GaimConnection *gc;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5845 OscarData *od;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5846 GaimAccount *account;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5847 GaimStatus *status;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5848 const char *message;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5849 va_list ap;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5850 fu16_t maxpermits, maxdenies;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5851
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5852 gc = sess->aux_data;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5853 od = (OscarData *)gc->proto_data;
11809
53da46e79de1 [gaim-migrate @ 14100]
Mark Doliner <mark@kingant.net>
parents: 11808
diff changeset
5854 account = gaim_connection_get_account(gc);
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5855
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5856 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5857 maxpermits = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5858 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5859 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5860
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5861 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5862 "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5863
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5864 od->rights.maxpermits = (guint)maxpermits;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5865 od->rights.maxdenies = (guint)maxdenies;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5866
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
5867 gaim_connection_set_state(gc, GAIM_CONNECTED);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5868
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5869 gaim_debug_info("oscar", "buddy list loaded\n");
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5870
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
5871 aim_clientready(sess, fr->conn);
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5872
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5873 /* Set our available message based on the current status */
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5874 status = gaim_account_get_active_status(account);
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5875 if (gaim_status_is_available(status))
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5876 message = gaim_status_get_attr_string(status, "message");
11810
42b5b3015d9e [gaim-migrate @ 14101]
Mark Doliner <mark@kingant.net>
parents: 11809
diff changeset
5877 else
42b5b3015d9e [gaim-migrate @ 14101]
Mark Doliner <mark@kingant.net>
parents: 11809
diff changeset
5878 message = NULL;
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5879 aim_srv_setavailmsg(sess, message);
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
5880
7474
2bdacd38528c [gaim-migrate @ 8087]
Mark Doliner <mark@kingant.net>
parents: 7465
diff changeset
5881 aim_srv_setidle(sess, 0);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5882
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5883 if (od->icq) {
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5884 aim_icq_reqofflinemsgs(sess);
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5885 aim_icq_setsecurity(sess,
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5886 gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5887 gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5888 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
5889 }
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5890
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
5891 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
c5ce82228a2f [gaim-migrate @ 4317]
Mark Doliner <mark@kingant.net>
parents: 4076
diff changeset
5892 if (sess->authinfo->email)
c5ce82228a2f [gaim-migrate @ 4317]
Mark Doliner <mark@kingant.net>
parents: 4076
diff changeset
5893 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5894
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5895 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5896 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5897
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5898 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
5899 va_list ap;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5900 struct aim_icq_offlinemsg *msg;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5901 struct aim_incomingim_ch4_args args;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5902 time_t t;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5903
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5904 va_start(ap, fr);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5905 msg = va_arg(ap, struct aim_icq_offlinemsg *);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5906 va_end(ap);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5907
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5908 gaim_debug_info("oscar",
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
5909 "Received offline message. Converting to channel 4 ICBM...\n");
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5910 args.uin = msg->sender;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5911 args.type = msg->type;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
5912 args.flags = msg->flags;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
5913 args.msglen = msg->msglen;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
5914 args.msg = msg->msg;
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5915 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
5916 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5917
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5918 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5919 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5920
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5921 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
5922 {
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5923 aim_icq_ackofflinemsgs(sess);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5924 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5925 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
5926
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5927 #if 0
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5928 /*
7465
dedbfdc7ce65 [gaim-migrate @ 8078]
Mark Doliner <mark@kingant.net>
parents: 7422
diff changeset
5929 * Update, 2003-11-09:
dedbfdc7ce65 [gaim-migrate @ 8078]
Mark Doliner <mark@kingant.net>
parents: 7422
diff changeset
5930 * 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
5931 *
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5932 * It may not be my place to do this, but...
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5933 * 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
5934 * 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
5935 * 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
5936 * 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
5937 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5938 * 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
5939 * 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
5940 * what the locale wanted.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5941 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5942 * 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
5943 * 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
5944 * year.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5945 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5946 * 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
5947 * (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
5948 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5949 * 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
5950 * 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
5951 *
22ed0a0c003d [gaim-migrate @ 7984]
Mark Doliner <mark@kingant.net>
parents: 7388
diff changeset
5952 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3190
22ed0a0c003d [gaim-migrate @ 7984]
Mark Doliner <mark@kingant.net>
parents: 7388
diff changeset
5953 * 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
5954 */
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5955
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5956 /*
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5957 * 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
5958 * "last 2 digits" warning.
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5959 */
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
5960 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
5961 const struct tm *tm)
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5962 {
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5963 return strftime(s, max, fmt, tm);
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5964 }
10636
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5965
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5966 /*
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5967 * 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
5968 *
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5969 * Use gaim_strftime()
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5970 */
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
5971
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
5972 #endif
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5973
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5974 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
5975 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5976 GaimConnection *gc = sess->aux_data;
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5977 OscarData *od = (OscarData *)gc->proto_data;
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5978 GaimBuddy *buddy;
8853
60cc86a15eed [gaim-migrate @ 9620]
Nathan Walp <nwalp@pidgin.im>
parents: 8838
diff changeset
5979 struct buddyinfo *bi = NULL;
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5980 gchar who[16];
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5981 GString *str;
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
5982 gchar *utf8;
9634
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
5983 const gchar *alias;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5984 va_list ap;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5985 struct aim_icq_info *info;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5986
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5987 va_start(ap, fr);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
5988 info = va_arg(ap, struct aim_icq_info *);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5989 va_end(ap);
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
5990
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5991 if (!info->uin)
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5992 return 0;
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
5993
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5994 str = g_string_sized_new(100);
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
5995 g_snprintf(who, sizeof(who), "%u", info->uin);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5996 buddy = gaim_find_buddy(gaim_connection_get_account(gc), who);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5997 if (buddy != NULL)
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
5998 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
5999
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6000 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
6001 oscar_string_append(str, "\n<br>", _("Nick"), info->nick);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6002 if ((bi != NULL) && (bi->ipaddr != 0)) {
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6003 char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6004 (bi->ipaddr & 0xff000000) >> 24,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6005 (bi->ipaddr & 0x00ff0000) >> 16,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6006 (bi->ipaddr & 0x0000ff00) >> 8,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6007 (bi->ipaddr & 0x000000ff));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6008 oscar_string_append(str, "\n<br>", _("IP Address"), tstr);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6009 g_free(tstr);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6010 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6011 oscar_string_append(str, "\n<br>", _("First Name"), info->first);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6012 oscar_string_append(str, "\n<br>", _("Last Name"), info->last);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
6013 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
6014 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
6015 g_free(utf8);
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
6016 }
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
6017 if (info->numaddresses && info->email2) {
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
6018 int i;
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
6019 for (i = 0; i < info->numaddresses; i++) {
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
6020 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
6021 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
6022 g_free(utf8);
4643
2b37c498b4bd [gaim-migrate @ 4953]
Nathan Walp <nwalp@pidgin.im>
parents: 4642
diff changeset
6023 }
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
6024 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6025 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6026 oscar_string_append(str, "\n<br>", _("Mobile Phone"), info->mobile);
10022
00a7ccf8ccd7 [gaim-migrate @ 10954]
Mark Doliner <mark@kingant.net>
parents: 10009
diff changeset
6027 if (info->gender != 0)
00a7ccf8ccd7 [gaim-migrate @ 10954]
Mark Doliner <mark@kingant.net>
parents: 10009
diff changeset
6028 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
6029 if (info->birthyear || info->birthmonth || info->birthday) {
4627
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
6030 char date[30];
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
6031 struct tm tm;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
6032 tm.tm_mday = (int)info->birthday;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
6033 tm.tm_mon = (int)info->birthmonth-1;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
6034 tm.tm_year = (int)info->birthyear-1900;
10636
0f5c5e6fb27f [gaim-migrate @ 12118]
Sean Egan <seanegan@gmail.com>
parents: 10603
diff changeset
6035 gaim_strftime(date, sizeof(date), "%x", &tm);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6036 oscar_string_append(str, "\n<br>", _("Birthday"), date);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
6037 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6038 if (info->age) {
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6039 char age[5];
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6040 snprintf(age, sizeof(age), "%hhd", info->age);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6041 oscar_string_append(str, "\n<br>", _("Age"), age);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
6042 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
6043 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
6044 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
6045 g_free(utf8);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
6046 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
6047 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
6048 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
6049 g_free(utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6050 }
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
6051 g_string_append_printf(str, "<hr>");
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
6052 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
6053 g_string_append_printf(str, "<b>%s:</b>", _("Home Address"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6054 oscar_string_append(str, "\n<br>", _("Address"), info->homeaddr);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6055 oscar_string_append(str, "\n<br>", _("City"), info->homecity);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6056 oscar_string_append(str, "\n<br>", _("State"), info->homestate);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6057 oscar_string_append(str, "\n<br>", _("Zip Code"), info->homezip);
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
6058 g_string_append_printf(str, "\n<hr>");
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
6059 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
6060 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
6061 g_string_append_printf(str, "<b>%s:</b>", _("Work Address"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6062 oscar_string_append(str, "\n<br>", _("Address"), info->workaddr);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6063 oscar_string_append(str, "\n<br>", _("City"), info->workcity);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6064 oscar_string_append(str, "\n<br>", _("State"), info->workstate);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6065 oscar_string_append(str, "\n<br>", _("Zip Code"), info->workzip);
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
6066 g_string_append_printf(str, "\n<hr>");
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6067 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
6068 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
6069 g_string_append_printf(str, "<b>%s:</b>", _("Work Information"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6070 oscar_string_append(str, "\n<br>", _("Company"), info->workcompany);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6071 oscar_string_append(str, "\n<br>", _("Division"), info->workdivision);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
6072 oscar_string_append(str, "\n<br>", _("Position"), info->workposition);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
6073 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
6074 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
6075 g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6076 }
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
6077 g_string_append_printf(str, "\n<hr>");
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6078 }
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6079
9634
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
6080 if (buddy != NULL)
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
6081 alias = gaim_buddy_get_alias(buddy);
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
6082 else
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
6083 alias = who;
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
6084 gaim_notify_userinfo(gc, who, str->str, NULL, NULL);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
6085 g_string_free(str, TRUE);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
6086
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
6087 return 1;
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
6088 }
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
6089
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6090 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
6091 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6092 GaimConnection *gc = sess->aux_data;
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
6093 gchar who[16], *utf8;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6094 GaimBuddy *b;
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6095 va_list ap;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6096 struct aim_icq_info *info;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6097
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6098 va_start(ap, fr);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6099 info = va_arg(ap, struct aim_icq_info *);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6100 va_end(ap);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6101
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
6102 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
6103 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
6104 serv_got_alias(gc, who, utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6105 if ((b = gaim_find_buddy(gc->account, who))) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
6106 gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6107 }
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
6108 g_free(utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6109 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6110
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6111 return 1;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6112 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6113
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6114 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
6115 {
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
6116 GaimConnection *gc = sess->aux_data;
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
6117 gchar *text;
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
6118 va_list ap;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6119 char *msg, *url;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6120 fu16_t wid, hei, delay;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6121
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6122 va_start(ap, fr);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6123 msg = va_arg(ap, char *);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6124 url = va_arg(ap, char *);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
6125 wid = (fu16_t) va_arg(ap, int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
6126 hei = (fu16_t) va_arg(ap, int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
6127 delay = (fu16_t) va_arg(ap, int);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6128 va_end(ap);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6129
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
6130 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
6131 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
6132 g_free(text);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6133
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6134 return 1;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6135 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6136
11359
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6137 static void oscar_searchresults_add_buddy_cb(GaimConnection *gc, GList *row)
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6138 {
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6139 gaim_blist_request_add_buddy(gaim_connection_get_account(gc),
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6140 g_list_nth_data(row, 0), NULL, NULL);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6141 }
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6142
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
6143 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
6144 {
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6145 GaimConnection *gc = sess->aux_data;
11359
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6146 GaimNotifySearchResults *results;
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6147 GaimNotifySearchColumn *column;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6148 gchar *secondary;
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6149 int i, num;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6150 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6151 char *email, *SNs;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6152
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6153 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6154 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6155 num = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6156 SNs = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6157 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6158
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
6159 /* TODO: Need to use ngettext() here */
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
6160 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
6161
11359
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6162 results = gaim_notify_searchresults_new();
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6163 column = gaim_notify_searchresults_column_new("Screen name");
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6164 gaim_notify_searchresults_column_add(results, column);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6165
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6166 for (i = 0; i < num; i++) {
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6167 GList *row = NULL;
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6168 row = g_list_append(row, g_strdup(&SNs[i * (MAXSNLEN + 1)]));
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6169 gaim_notify_searchresults_row_add(results, row);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6170 }
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6171 gaim_notify_searchresults_button_add(results, GAIM_NOTIFY_BUTTON_ADD_BUDDY,
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6172 oscar_searchresults_add_buddy_cb);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
6173 gaim_notify_searchresults(gc, NULL, NULL, secondary, results, NULL, NULL);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6174
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6175 g_free(secondary);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6176
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6177 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6178 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6179
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6180 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
6181 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6182 char *email;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
6183 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6184
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6185 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6186 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6187 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6188
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6189 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
6190 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
6191 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6192
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6193 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6194 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6195
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6196 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
6197 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6198 fu16_t status;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6199 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6200 char msg[256];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6201
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6202 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
6203 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
6204 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6205
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6206 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6207 "account confirmation returned status 0x%04x (%s)\n", status,
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6208 status ? "unknown" : "email sent");
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6209 if (!status) {
5302
6dfcd7dbecde [gaim-migrate @ 5674]
Luke Schierer <lschiere@pidgin.im>
parents: 5301
diff changeset
6210 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
6211 gaim_account_get_username(gaim_connection_get_account(gc)));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6212 gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6213 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6214
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6215 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6216 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6217
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6218 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
6219 GaimConnection *gc = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6220 va_list ap;
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6221 fu16_t perms, err;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6222 char *url, *sn, *email;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6223 int change;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6224
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6225 va_start(ap, fr);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6226 change = va_arg(ap, int);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
6227 perms = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
6228 err = (fu16_t) va_arg(ap, unsigned int);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6229 url = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6230 sn = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6231 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6232 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6233
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6234 gaim_debug_misc("oscar",
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6235 "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
6236 change ? "change" : "request", perms, err,
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6237 (url != NULL) ? url : "(null)",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6238 (sn != NULL) ? sn : "(null)",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6239 (email != NULL) ? email : "(null)");
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6240
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6241 if ((err > 0) && (url != NULL)) {
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6242 char *dialog_msg;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6243 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6244 switch (err) {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6245 case 0x0001: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6246 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
6247 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6248 case 0x0006: {
11399
48244c196228 [gaim-migrate @ 13634]
Mark Doliner <mark@kingant.net>
parents: 11369
diff changeset
6249 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because it is invalid."), err);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6250 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6251 case 0x000b: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6252 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
6253 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6254 case 0x001d: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6255 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
6256 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6257 case 0x0021: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6258 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
6259 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6260 case 0x0023: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6261 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
6262 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6263 default: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6264 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6265 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6266 }
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6267 gaim_notify_error(gc, NULL, dialog_top, dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6268 g_free(dialog_top);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6269 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6270 return 1;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6271 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6272
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6273 if (sn != NULL) {
4585
2427d847e39c [gaim-migrate @ 4869]
Luke Schierer <lschiere@pidgin.im>
parents: 4508
diff changeset
6274 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
6275 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6276 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6277 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6278
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
6279 if (email != NULL) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6280 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
6281 gaim_account_get_username(gaim_connection_get_account(gc)), email);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6282 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
6283 g_free(dialog_msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6284 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6285
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6286 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6287 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6288
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6289 static void oscar_keepalive(GaimConnection *gc) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6290 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6291 aim_flap_nop(od->sess, od->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6292 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6293
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
6294 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
6295 OscarData *od = (OscarData *)gc->proto_data;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
6296 struct oscar_direct_im *dim = oscar_direct_im_find(od, name);
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
6297 if (dim && dim->connected)
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
6298 if (typing == GAIM_TYPING)
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
6299 aim_odc_send_typing(od->sess, dim->conn, 0x0002);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
6300 else if (typing == GAIM_TYPED)
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
6301 aim_odc_send_typing(od->sess, dim->conn, 0x0001);
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
6302 else
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
6303 aim_odc_send_typing(od->sess, dim->conn, 0x0000);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
6304 else {
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6305 /* Don't send if this turkey is in our deny list */
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6306 GSList *list;
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6307 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
6308 if (!list) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
6309 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
6310 if (bi && bi->typingnot) {
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
6311 if (typing == GAIM_TYPING)
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6312 aim_im_sendmtn(od->sess, 0x0001, name, 0x0002);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
6313 else if (typing == GAIM_TYPED)
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6314 aim_im_sendmtn(od->sess, 0x0001, name, 0x0001);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6315 else
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6316 aim_im_sendmtn(od->sess, 0x0001, name, 0x0000);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
6317 }
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
6318 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
6319 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
6320 return 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
6321 }
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
6322
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
6323 static int gaim_odc_send_im(aim_session_t *, aim_conn_t *, const char *, GaimMessageFlags);
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
6324
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
6325 static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, GaimMessageFlags imflags) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6326 OscarData *od = (OscarData *)gc->proto_data;
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
6327 GaimAccount *account = gaim_connection_get_account(gc);
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
6328 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
6329 int ret = 0;
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
6330 char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(account));
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
6331 char *tmpmsg = NULL;
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
6332
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
6333 if (dim && dim->connected) {
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
6334 /* If we're directly connected, send a direct IM */
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
6335 ret = gaim_odc_send_im(od->sess, dim->conn, message, imflags);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6336 } else {
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6337 struct buddyinfo *bi;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6338 struct aim_sendimext_args args;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6339 struct stat st;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
6340 gsize len;
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
6341 GaimConversation *conv;
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
6342
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
6343 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, name, account);
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6344
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6345 if (strstr(message, "<IMG "))
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6346 gaim_conversation_write(conv, "",
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6347 _("Your IM Image was not sent. "
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6348 "You must be Direct Connected to send IM Images."),
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6349 GAIM_MESSAGE_ERROR, time(NULL));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6350
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
6351 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
6352 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6353 bi = g_new0(struct buddyinfo, 1);
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
6354 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
6355 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6356
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6357 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
6358 if (od->icq) {
11185
1ce573a2e125 [gaim-migrate @ 13297]
Mark Doliner <mark@kingant.net>
parents: 11172
diff changeset
6359 /* We have to present different "features" (whose meaning
11172
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6360 is unclear and are merely a result of protocol inspection)
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6361 to offline ICQ buddies. Otherwise, the official
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6362 ICQ client doesn't treat those messages as being "ANSI-
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6363 encoded" (and instead, assumes them to be UTF-8).
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6364 For more details, see SF issue 1179452.
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6365 */
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6366 GaimBuddy *buddy = gaim_find_buddy(gc->account, name);
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11873
diff changeset
6367 if (buddy && GAIM_BUDDY_IS_ONLINE(buddy)) {
11172
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6368 args.features = features_icq;
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6369 args.featureslen = sizeof(features_icq);
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6370 } else {
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6371 args.features = features_icq_offline;
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6372 args.featureslen = sizeof(features_icq_offline);
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
6373 }
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6374 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
6375 } else {
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
6376 args.features = features_aim;
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
6377 args.featureslen = sizeof(features_aim);
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
6378
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
6379 if (imflags & GAIM_MESSAGE_AUTO_RESP)
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
6380 args.flags |= AIM_IMFLAGS_AWAY;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
6381 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6382
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6383 if (bi->ico_need) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6384 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6385 "Sending buddy icon request with message\n");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6386 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6387 bi->ico_need = FALSE;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6388 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6389
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
6390 if (iconfile && !g_stat(iconfile, &st)) {
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
6391 FILE *file = g_fopen(iconfile, "rb");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6392 if (file) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
6393 guchar *buf = g_malloc(st.st_size);
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
6394 /* XXX - Use g_file_get_contents()? */
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6395 fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6396 fclose(file);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6397
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6398 args.iconlen = st.st_size;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6399 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6400 args.iconstamp = st.st_mtime;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6401
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
6402 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
6403 bi->ico_informed = FALSE;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
6404 bi->ico_sent = FALSE;
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
6405 }
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6406
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6407 if (!bi->ico_informed) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6408 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6409 "Claiming to have a buddy icon\n");
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6410 args.flags |= AIM_IMFLAGS_HASICON;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6411 bi->ico_me_len = args.iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6412 bi->ico_me_csum = args.iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6413 bi->ico_me_time = args.iconstamp;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6414 bi->ico_informed = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6415 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
6416
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6417 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6418 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6419 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
6420 g_free(iconfile);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6421
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
6422 args.destsn = name;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6423
8985
8abc99ed5d93 [gaim-migrate @ 9760]
Mark Doliner <mark@kingant.net>
parents: 8984
diff changeset
6424 /*
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
6425 * 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
6426 * and use \r\n as the newline character.
8985
8abc99ed5d93 [gaim-migrate @ 9760]
Mark Doliner <mark@kingant.net>
parents: 8984
diff changeset
6427 */
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
6428 if (aim_sn_is_icq(gaim_account_get_username(account))) {
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
6429 if (aim_sn_is_icq(name))
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
6430 /* From ICQ to ICQ */
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
6431 tmpmsg = gaim_unescape_html(message);
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
6432 else
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
6433 /* From ICQ to AIM */
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
6434 tmpmsg = g_strdup(message);
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
6435 } else {
10785
4a2f361f49b9 [gaim-migrate @ 12423]
Mark Doliner <mark@kingant.net>
parents: 10783
diff changeset
6436 /* From AIM to AIM and AIM to ICQ */
4a2f361f49b9 [gaim-migrate @ 12423]
Mark Doliner <mark@kingant.net>
parents: 10783
diff changeset
6437 tmpmsg = g_strdup(message);
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
6438 }
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
6439 len = strlen(tmpmsg);
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
6440
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6441 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
6442 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
6443 args.charset, args.charsubset, args.msglen);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6444 ret = aim_im_sendch1_ext(od->sess, &args);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6445 g_free((char *)args.msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6446 }
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
6447
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
6448 g_free(tmpmsg);
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
6449
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
6450 if (ret >= 0)
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
6451 return 1;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
6452
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
6453 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6454 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6455
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6456 static void oscar_get_info(GaimConnection *gc, const char *name) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6457 OscarData *od = (OscarData *)gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6458
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
6459 if (od->icq && aim_sn_is_icq(name))
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6460 aim_icq_getallinfo(od->sess, name);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
6461 else
7235
03f22e564311 [gaim-migrate @ 7810]
Mark Doliner <mark@kingant.net>
parents: 7173
diff changeset
6462 aim_locate_getinfoshort(od->sess, name, 0x00000003);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6463 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6464
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
6465 #if 0
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6466 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
6467 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
6468 /* 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
6469 OscarData *od = (OscarData *)gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6470 aim_locate_setdirinfo(od->sess, first, middle, last,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6471 maiden, NULL, NULL, city, state, NULL, 0, web);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6472 }
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
6473 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6474
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6475 static void oscar_set_idle(GaimConnection *gc, int time) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6476 OscarData *od = (OscarData *)gc->proto_data;
7474
2bdacd38528c [gaim-migrate @ 8087]
Mark Doliner <mark@kingant.net>
parents: 7465
diff changeset
6477 aim_srv_setidle(od->sess, time);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6478 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6479
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6480 static
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6481 gchar *gaim_prpl_oscar_convert_to_infotext(const gchar *str, gsize *ret_len, char **encoding)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6482 {
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
6483 int charset = 0;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6484 char *encoded = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6485
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6486 charset = oscar_charset_check(str);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6487 if (charset == AIM_CHARSET_UNICODE) {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6488 encoded = g_convert(str, strlen(str), "UCS-2BE", "UTF-8", NULL, ret_len, NULL);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6489 *encoding = "unicode-2-0";
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6490 } else if (charset == AIM_CHARSET_CUSTOM) {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6491 encoded = g_convert(str, strlen(str), "ISO-8859-1", "UTF-8", NULL, ret_len, NULL);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6492 *encoding = "iso-8859-1";
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6493 } else {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6494 encoded = g_strdup(str);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6495 *ret_len = strlen(str);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6496 *encoding = "us-ascii";
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6497 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6498
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6499 return encoded;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6500 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6501
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6502 static void
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6503 oscar_set_info(GaimConnection *gc, const char *rawinfo)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6504 {
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6505 GaimAccount *account;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6506 GaimStatus *status;
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6507
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6508 account = gaim_connection_get_account(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6509 status = gaim_account_get_active_status(account);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6510 oscar_set_info_and_status(account, TRUE, rawinfo, FALSE, status);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6511 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6512
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6513 static void
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6514 oscar_set_extendedstatus(GaimConnection *gc)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6515 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6516 OscarData *od;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6517 GaimAccount *account;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6518 GaimPresence *presence;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6519 gboolean invisible;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6520
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6521 od = gc->proto_data;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6522 account = gaim_connection_get_account(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6523 presence = gaim_account_get_presence(account);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6524 invisible = gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_HIDDEN);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6525
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6526 if (invisible)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6527 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6528 else if (!gaim_presence_is_available(presence))
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6529 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6530 else
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6531 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6532 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6533
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6534 static void
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6535 oscar_set_info_and_status(GaimAccount *account, gboolean setinfo, const char *rawinfo,
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6536 gboolean setstatus, GaimStatus *status)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6537 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6538 GaimConnection *gc = gaim_account_get_connection(account);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6539 OscarData *od = gc->proto_data;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6540 GaimPresence *presence;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6541 GaimStatusType *status_type;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6542 GaimStatusPrimitive primitive;
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6543 gboolean invisible;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6544
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6545 char *htmlinfo;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6546 char *info_encoding = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6547 char *info = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6548 gsize infolen = 0;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6549
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6550 const char *htmlaway;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6551 char *away_encoding = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6552 char *away = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6553 gsize awaylen = 0;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6554
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6555 status_type = gaim_status_get_type(status);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6556 primitive = gaim_status_type_get_primitive(status_type);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6557 presence = gaim_account_get_presence(account);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6558 invisible = gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_HIDDEN);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6559
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6560 if (!setinfo)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6561 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6562 /* Do nothing! */
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6563 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6564 else if (od->rights.maxsiglen == 0)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6565 {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6566 gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6567 _("You have probably requested to set your "
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
6568 "profile before the login procedure completed. "
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6569 "Your profile remains unset; try setting it "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6570 "again when you are fully connected."));
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6571 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6572 else if (rawinfo != NULL)
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6573 {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6574 htmlinfo = gaim_strdup_withhtml(rawinfo);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6575 info = gaim_prpl_oscar_convert_to_infotext(htmlinfo, &infolen, &info_encoding);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6576 g_free(htmlinfo);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6577
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6578 if (infolen > od->rights.maxsiglen)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6579 {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6580 gchar *errstr;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6581 errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6582 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6583 "The maximum profile length of %d bytes "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6584 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6585 od->rights.maxsiglen), od->rights.maxsiglen);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6586 gaim_notify_warning(gc, NULL, _("Profile too long."), errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6587 g_free(errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6588 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6589 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6590
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6591 if (!setstatus)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6592 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6593 /* Do nothing! */
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6594 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6595 else if (primitive == GAIM_STATUS_AVAILABLE)
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6596 {
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6597 const char *avail_html;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6598 char *avail_text;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6599
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6600 avail_html = gaim_status_get_attr_string(status, "message");
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6601 if (avail_html != NULL)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6602 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6603 avail_text = gaim_markup_strip_html(avail_html);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6604 aim_srv_setavailmsg(od->sess, avail_text);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6605 g_free(avail_text);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6606 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6607
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6608 /* This is needed for us to un-set any previous away message. */
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6609 away = g_strdup("");
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6610 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6611 else if (primitive == GAIM_STATUS_AWAY)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6612 {
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6613 htmlaway = gaim_status_get_attr_string(status, "message");
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6614 if ((htmlaway == NULL) || (*htmlaway == '\0'))
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6615 htmlaway = _("Away");
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6616 away = gaim_prpl_oscar_convert_to_infotext(htmlaway, &awaylen, &away_encoding);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6617
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6618 if (awaylen > od->rights.maxawaymsglen)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6619 {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6620 gchar *errstr;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6621
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6622 errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6623 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6624 "The maximum away message length of %d bytes "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6625 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6626 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6627 gaim_notify_warning(gc, NULL, _("Away message too long."), errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6628 g_free(errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6629 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6630 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6631
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6632 if (setstatus)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6633 oscar_set_extendedstatus(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6634
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6635 aim_locate_setprofile(od->sess, info_encoding, info, MIN(infolen, od->rights.maxsiglen),
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6636 away_encoding, away, MIN(awaylen, od->rights.maxawaymsglen));
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6637 g_free(info);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
6638 g_free(away);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6639 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6640
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6641 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6642 oscar_set_status_icq(GaimAccount *account, GaimStatus *status)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
6643 {
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6644 GaimConnection *gc = gaim_account_get_connection(account);
10646
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
6645 OscarData *od = NULL;
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6646 const gchar *status_id = gaim_status_get_id(status);
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6647
10646
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
6648 if (gc)
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
6649 od = (OscarData *)gc->proto_data;
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
6650 if (!od)
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
6651 return;
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
6652
11766
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
6653 if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_HIDDEN)
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
6654 account->perm_deny = GAIM_PRIVACY_ALLOW_USERS;
8265
b7ff849f48dd [gaim-migrate @ 8988]
Mark Doliner <mark@kingant.net>
parents: 8257
diff changeset
6655 else
11766
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
6656 account->perm_deny = GAIM_PRIVACY_DENY_USERS;
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6657
8265
b7ff849f48dd [gaim-migrate @ 8988]
Mark Doliner <mark@kingant.net>
parents: 8257
diff changeset
6658 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
6659 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
6660
11522
a26eb48d1953 [gaim-migrate @ 13770]
Mark Doliner <mark@kingant.net>
parents: 11510
diff changeset
6661 if (!strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE) || !strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6662 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6663
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6664 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6665 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6666
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6667 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6668 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
6669
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6670 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6671 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
6672
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6673 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6674 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
6675
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6676 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6677 aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6678
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6679 else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
6680 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6681
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6682 else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM))
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6683 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
6684 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
6685
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6686 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6687 oscar_set_status(GaimAccount *account, GaimStatus *status)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
6688 {
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
6689 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
6690
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
6691 if (!gaim_status_is_active(status))
10485
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
6692 return;
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
6693
11718
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
6694 if (!gaim_account_is_connected(account))
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
6695 return;
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
6696
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
6697 if (aim_sn_is_icq(gaim_account_get_username(account)))
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
6698 oscar_set_status_icq(account, status);
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
6699 else
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
6700 /* QQQ - Should probably also set this for ICQ */
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6701 oscar_set_info_and_status(account, FALSE, NULL, TRUE, status);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6702 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6703
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
6704 #ifdef CRAZY_WARN
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6705 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
6706 oscar_warn(GaimConnection *gc, const char *name, gboolean anonymous) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6707 OscarData *od = (OscarData *)gc->proto_data;
9753
60705fd4f411 [gaim-migrate @ 10620]
Mark Doliner <mark@kingant.net>
parents: 9730
diff changeset
6708 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
6709 }
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
6710 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6711
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
6712 static void
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
6713 oscar_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6714 OscarData *od = (OscarData *)gc->proto_data;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6715
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6716 if (!aim_snvalid(buddy->name)) {
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
6717 gchar *buf;
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
6718 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
6719 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
6720 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
6721 g_free(buf);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6722
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6723 /* Remove from local list */
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6724 gaim_blist_remove_buddy(buddy);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6725
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
6726 return;
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
6727 }
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
6728
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6729 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
6730 if (buddy && group) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6731 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6732 "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
6733 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
6734 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6735 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6736
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
6737 /* XXX - Should this be done from AIM accounts, as well? */
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
6738 if (od->icq)
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6739 aim_icq_getalias(od->sess, buddy->name);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6740 }
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6741
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6742 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
6743 OscarData *od = (OscarData *)gc->proto_data;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6744
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6745 if (od->sess->ssi.received_data) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6746 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6747 "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
6748 aim_ssi_delbuddy(od->sess, buddy->name, group->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6749 }
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
6750 }
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
6751
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6752 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
6753 OscarData *od = (OscarData *)gc->proto_data;
4303
22ebfa41525a [gaim-migrate @ 4557]
Mark Doliner <mark@kingant.net>
parents: 4299
diff changeset
6754 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
6755 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6756 "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
6757 aim_ssi_movebuddy(od->sess, old_group, new_group, name);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6758 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6759 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6760
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6761 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
6762 OscarData *od = (OscarData *)gc->proto_data;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6763 if (od->sess->ssi.received_data) {
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6764 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6765 if (gname) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6766 gaim_debug_info("oscar",
9586
70fe6ef5d3a3 [gaim-migrate @ 10429]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
6767 "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
6768 aim_ssi_aliasbuddy(od->sess, gname, name, alias);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6769 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6770 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6771 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6772
11005
bb7fd9359f9e [gaim-migrate @ 12864]
Mark Doliner <mark@kingant.net>
parents: 11002
diff changeset
6773 /*
bb7fd9359f9e [gaim-migrate @ 12864]
Mark Doliner <mark@kingant.net>
parents: 11002
diff changeset
6774 * FYI, the OSCAR SSI code removes empty groups automatically.
bb7fd9359f9e [gaim-migrate @ 12864]
Mark Doliner <mark@kingant.net>
parents: 11002
diff changeset
6775 */
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6776 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
6777 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6778
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6779 if (od->sess->ssi.received_data) {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6780 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
6781 GList *cur, *groups = NULL;
11643
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11623
diff changeset
6782 GaimAccount *account = gaim_connection_get_account(gc);
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6783
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6784 /* Make a list of what the groups each buddy is in */
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6785 for (cur = moved_buddies; cur != NULL; cur = cur->next) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6786 GaimBlistNode *node = cur->data;
11002
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
6787 /* node is GaimBuddy, parent is a GaimContact.
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
6788 * We must go two levels up to get the Group */
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
6789 groups = g_list_append(groups,
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
6790 node->parent->parent);
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6791 }
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6792
11643
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11623
diff changeset
6793 gaim_account_remove_buddies(account, moved_buddies, groups);
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11623
diff changeset
6794 gaim_account_add_buddies(account, moved_buddies);
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6795 g_list_free(groups);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6796 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6797 "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
6798 } else {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6799 aim_ssi_rename_group(od->sess, old_name, group->name);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6800 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
6801 "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
6802 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6803 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6804 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6805
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6806 static gboolean gaim_ssi_rerequestdata(gpointer data) {
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6807 aim_session_t *sess = data;
6350
34c07f5f34a0 [gaim-migrate @ 6849]
Mark Doliner <mark@kingant.net>
parents: 6318
diff changeset
6808 aim_ssi_reqdata(sess);
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6809 return FALSE;
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6810 }
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
6811
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6812 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
6813 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6814 OscarData *od = gc->proto_data;
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6815 va_list ap;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6816 fu16_t reason;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6817
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6818 va_start(ap, fr);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6819 reason = (fu16_t)va_arg(ap, unsigned int);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6820 va_end(ap);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6821
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6822 gaim_debug_error("oscar", "ssi: SNAC error %hu\n", reason);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6823
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6824 if (reason == 0x0005) {
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
6825 gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
6826 _("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
6827 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
6828 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6829
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6830 oscar_set_extendedstatus(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6831
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6832 /* Activate SSI */
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6833 /* 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
6834 /* 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
6835 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
6836 aim_ssi_enable(od->sess);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6837
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6838 return 1;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6839 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
6840
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6841 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
6842 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6843 OscarData *od = (OscarData *)gc->proto_data;
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6844 int i;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6845 va_list ap;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
6846 int numtypes;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6847 fu16_t *maxitems;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6848
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6849 va_start(ap, fr);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6850 numtypes = va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6851 maxitems = va_arg(ap, fu16_t *);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6852 va_end(ap);
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6853
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6854 gaim_debug_misc("oscar", "ssi rights:");
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
6855
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6856 for (i=0; i<numtypes; i++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6857 gaim_debug_misc(NULL, " max type 0x%04x=%hd,",
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
6858 i, maxitems[i]);
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
6859
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6860 gaim_debug_misc(NULL, "\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6861
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6862 if (numtypes >= 0)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6863 od->rights.maxbuddies = maxitems[0];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6864 if (numtypes >= 1)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6865 od->rights.maxgroups = maxitems[1];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6866 if (numtypes >= 2)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6867 od->rights.maxpermits = maxitems[2];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6868 if (numtypes >= 3)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6869 od->rights.maxdenies = maxitems[3];
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6870
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6871 return 1;
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6872 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6873
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6874 static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6875 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6876 GaimConnection *gc;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6877 OscarData *od;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6878 GaimAccount *account;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6879 GaimGroup *g;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6880 GaimBuddy *b;
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6881 struct aim_ssi_item *curitem;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6882 int tmp;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6883 va_list ap;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6884 fu16_t fmtver, numitems;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6885 struct aim_ssi_item *items;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6886 fu32_t timestamp;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6887
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6888 gc = sess->aux_data;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6889 od = gc->proto_data;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6890 account = gaim_connection_get_account(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
6891
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6892 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6893 fmtver = (fu16_t)va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6894 numitems = (fu16_t)va_arg(ap, int);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6895 items = va_arg(ap, struct aim_ssi_item *);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6896 timestamp = va_arg(ap, fu32_t);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6897 va_end(ap);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6898
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6899 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6900 "ssi: syncing local list and server list\n");
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6901
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6902 if ((timestamp == 0) || (numitems == 0)) {
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
6903 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
6904 return 1;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6905 }
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
6906
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6907 /* Clean the buddy list */
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6908 aim_ssi_cleanlist(sess);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6909
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6910 { /* If not in server list then prune from local list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6911 GaimBlistNode *gnode, *cnode, *bnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6912 GaimBuddyList *blist;
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6913 GSList *cur, *next;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6914
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6915 /* Buddies */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6916 cur = NULL;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6917 if ((blist = gaim_get_blist()) != NULL) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6918 for (gnode = blist->root; gnode; gnode = gnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6919 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6920 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6921 g = (GaimGroup *)gnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6922 for (cnode = gnode->child; cnode; cnode = cnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6923 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6924 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6925 for (bnode = cnode->child; bnode; bnode = bnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6926 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6927 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6928 b = (GaimBuddy *)bnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6929 if (b->account == gc->account) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6930 if (aim_ssi_itemlist_exists(sess->ssi.local, b->name)) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6931 /* If the buddy is an ICQ user then load his nickname */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6932 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
6933 char *alias;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6934 if (servernick)
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6935 serv_got_alias(gc, b->name, servernick);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6936
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6937 /* Store local alias on server */
8214
3418a6d51464 [gaim-migrate @ 8937]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
6938 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
6939 if (!alias && b->alias && strlen(b->alias))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6940 aim_ssi_aliasbuddy(sess, g->name, b->name, b->alias);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6941 free(alias);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6942 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6943 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6944 "ssi: removing buddy %s from local list\n", b->name);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6945 /* 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
6946 cur = g_slist_prepend(cur, b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6947 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6948 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6949 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6950 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6951 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6952 }
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
6953
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6954 while (cur != NULL) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6955 b = cur->data;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6956 cur = g_slist_remove(cur, b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6957 gaim_blist_remove_buddy(b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6958 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6959
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6960 /* Permit list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6961 if (gc->account->permit) {
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6962 next = gc->account->permit;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6963 while (next != NULL) {
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6964 cur = next;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6965 next = next->next;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6966 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
6967 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6968 "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
6969 gaim_privacy_permit_remove(account, cur->data, TRUE);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6970 }
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6971 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6972 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6973
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6974 /* Deny list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6975 if (gc->account->deny) {
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6976 next = gc->account->deny;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6977 while (next != NULL) {
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6978 cur = next;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6979 next = next->next;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6980 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
6981 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6982 "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
6983 gaim_privacy_deny_remove(account, cur->data, TRUE);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6984 }
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
6985 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6986 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6987 /* Presence settings (idle time visibility) */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6988 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6989 if (!(tmp & 0x400))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6990 aim_ssi_setpresence(sess, tmp | 0x400);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6991 } /* end pruning buddies from local list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
6992
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6993 /* Add from server list to local list */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6994 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
7328
3bcd867c22f3 [gaim-migrate @ 7914]
Mark Doliner <mark@kingant.net>
parents: 7313
diff changeset
6995 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
6996 switch (curitem->type) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6997 case 0x0000: { /* Buddy */
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
6998 if (curitem->name) {
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
6999 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
7000 char *gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
7001 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
7002 char *alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
7003 b = gaim_find_buddy(gc->account, curitem->name);
4458
a46c57f2d58b [gaim-migrate @ 4733]
Luke Schierer <lschiere@pidgin.im>
parents: 4452
diff changeset
7004 /* Should gname be freed here? -- elb */
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
7005 /* 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
7006 free(alias);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
7007 if (b) {
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
7008 /* Get server stored alias */
4705
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
7009 if (alias_utf8) {
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
7010 g_free(b->alias);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
7011 b->alias = g_strdup(alias_utf8);
4705
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
7012 }
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
7013 } else {
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
7014 b = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
7015
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
7016 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7017 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
7018 gaim_blist_add_group(g, NULL);
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
7019 }
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
7020
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7021 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
7022 "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
7023 gaim_blist_add_buddy(b, NULL, g, NULL);
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
7024 }
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7025 if (!aim_sncmp(curitem->name, account->username)) {
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7026 char *comment = aim_ssi_getcomment(sess->ssi.local, gname, curitem->name);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7027 gaim_check_comment(od, comment);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7028 free(comment);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7029 }
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
7030 g_free(gname_utf8);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
7031 g_free(alias_utf8);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7032 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7033 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7034
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7035 case 0x0001: { /* Group */
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
7036 /* Shouldn't add empty groups */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7037 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7038
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7039 case 0x0002: { /* Permit buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7040 if (curitem->name) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7041 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7042 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7043 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
7044 if (!list) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7045 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7046 "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
7047 gaim_privacy_permit_add(account, curitem->name, TRUE);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7048 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7049 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7050 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7051
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7052 case 0x0003: { /* Deny buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7053 if (curitem->name) {
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7054 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7055 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
7056 if (!list) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7057 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7058 "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
7059 gaim_privacy_deny_add(account, curitem->name, TRUE);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7060 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7061 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7062 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7063
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7064 case 0x0004: { /* Permit/deny setting */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7065 if (curitem->data) {
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7066 fu8_t permdeny;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7067 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
7068 gaim_debug_info("oscar",
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7069 "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
7070 account->perm_deny = permdeny;
11766
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
7071 if (od->icq && account->perm_deny == GAIM_PRIVACY_ALLOW_USERS) {
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
7072 gaim_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
7073 }
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7074 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7075 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7076 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7077
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7078 case 0x0005: { /* Presence setting */
3109
51f49dcbd14b [gaim-migrate @ 3123]
Sean Egan <seanegan@gmail.com>
parents: 3106
diff changeset
7079 /* 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
7080 } break;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7081 } /* End of switch on curitem->type */
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7082 } /* End of for loop */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7083
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
7084 oscar_set_extendedstatus(gc);
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
7085
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
7086 /* Activate SSI */
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
7087 /* 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
7088 /* 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
7089 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7090 "ssi: activating server-stored buddy list\n");
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
7091 aim_ssi_enable(sess);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
7092
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
7093 return 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7094 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7095
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7096 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
7097 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7098 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7099 struct aim_ssi_tmp *retval;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7100
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7101 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7102 retval = va_arg(ap, struct aim_ssi_tmp *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7103 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7104
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7105 while (retval) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7106 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7107 "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
7108
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7109 if (retval->ack != 0xffff)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7110 switch (retval->ack) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7111 case 0x0000: { /* added successfully */
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7112 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7113
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
7114 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
7115 gchar *buf;
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
7116 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
7117 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
7118 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
7119 g_free(buf);
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
7120 }
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
7121
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
7122 case 0x000e: { /* buddy requires authorization */
4828
71232144e2ff [gaim-migrate @ 5153]
Mark Doliner <mark@kingant.net>
parents: 4827
diff changeset
7123 if ((retval->action == AIM_CB_SSI_ADD) && (retval->name))
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
7124 gaim_auth_sendrequest(gc, retval->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7125 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7126
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7127 default: { /* La la la */
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
7128 gchar *buf;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7129 gaim_debug_error("oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
7130 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
7131 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
7132 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
7133 g_free(buf);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7134 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7135 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7136
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7137 retval = retval->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7138 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7139
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7140 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7141 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7142
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7143 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
7144 GaimConnection *gc = sess->aux_data;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7145 char *gname, *gname_utf8, *alias, *alias_utf8;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7146 GaimBuddy *b;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7147 GaimGroup *g;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7148 va_list ap;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7149 fu16_t type;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7150 const char *name;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7151
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7152 va_start(ap, fr);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7153 type = (fu16_t)va_arg(ap, int);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7154 name = va_arg(ap, char *);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7155 va_end(ap);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7156
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7157 if ((type != 0x0000) || (name == NULL))
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7158 return 1;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7159
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7160 gname = aim_ssi_itemlist_findparentname(sess->ssi.local, name);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7161 gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7162 alias = aim_ssi_getalias(sess->ssi.local, gname, name);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7163 alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7164 b = gaim_find_buddy(gc->account, name);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7165 free(alias);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7166
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7167 if (b) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7168 /* Get server stored alias */
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7169 if (alias_utf8) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7170 g_free(b->alias);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7171 b->alias = g_strdup(alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7172 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7173 } else {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7174 b = gaim_buddy_new(gc->account, name, alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7175
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7176 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7177 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7178 gaim_blist_add_group(g, NULL);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7179 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7180
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7181 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
7182 "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
7183 gaim_blist_add_buddy(b, NULL, g, NULL);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7184 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7185 g_free(gname_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7186 g_free(alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7187
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7188 return 1;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7189 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
7190
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7191 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
7192 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7193 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7194 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7195 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7196 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7197 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7198
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7199 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7200 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7201 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7202 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7203
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7204 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7205 "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
7206
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7207 buddy = gaim_find_buddy(gc->account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7208 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7209 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
7210 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7211 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7212
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
7213 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
7214 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7215 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7216 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7217 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
7218
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
7219 gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
7220 GAIM_DEFAULT_ACTION_NONE, data,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
7221 G_CALLBACK(gaim_icq_buddyadd),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
7222 G_CALLBACK(oscar_free_name_data));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7223
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7224 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7225 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7226
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7227 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7228 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7229
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7230 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
7231 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7232 va_list ap;
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7233 char *sn;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7234 char *msg;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7235 GaimAccount *account = gaim_connection_get_account(gc);
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7236 gchar *nombre;
11567
603a0e626332 [gaim-migrate @ 13834]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11537
diff changeset
7237 gchar *reason = NULL;
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7238 gchar *dialog_msg;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7239 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7240 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7241
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7242 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7243 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7244 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7245 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7246
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7247 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7248 "ssi: received authorization request from %s\n", sn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7249
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7250 buddy = gaim_find_buddy(account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7251 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7252 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
7253 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7254 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7255
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7256 if (msg != NULL)
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7257 reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg));
11567
603a0e626332 [gaim-migrate @ 13834]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11537
diff changeset
7258
603a0e626332 [gaim-migrate @ 13834]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11537
diff changeset
7259 if (reason == NULL)
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7260 reason = g_strdup(_("No reason given."));
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7261
10949
1adca5a37fb8 [gaim-migrate @ 12749]
Mark Doliner <mark@kingant.net>
parents: 10866
diff changeset
7262 dialog_msg = g_strdup_printf(
1adca5a37fb8 [gaim-migrate @ 12749]
Mark Doliner <mark@kingant.net>
parents: 10866
diff changeset
7263 _("The user %s wants to add %s to their buddy list for the following reason:\n%s"),
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7264 nombre, gaim_account_get_username(account), reason);
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
7265 g_free(reason);
10949
1adca5a37fb8 [gaim-migrate @ 12749]
Mark Doliner <mark@kingant.net>
parents: 10866
diff changeset
7266
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7267 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7268 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7269 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7270 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
7271
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
7272 gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg,
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
7273 GAIM_DEFAULT_ACTION_NONE, data, 2,
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
7274 _("Authorize"), G_CALLBACK(gaim_auth_grant),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
7275 _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7276
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7277 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7278 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7279
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7280 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7281 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7282
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7283 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
7284 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7285 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7286 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7287 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7288 fu8_t reply;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7289 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7290
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7291 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7292 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7293 reply = (fu8_t)va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7294 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7295 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7296
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7297 gaim_debug_info("oscar",
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
7298 "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
7299
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7300 buddy = gaim_find_buddy(gc->account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7301 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7302 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
7303 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7304 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7305
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7306 if (reply) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7307 /* Granted */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
7308 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
7309 gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7310 } else {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7311 /* Denied */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
7312 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
7313 gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7314 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7315 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
7316 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7317
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7318 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7319 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7320
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7321 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
7322 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7323 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7324 char *sn;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7325 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7326
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7327 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7328 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7329 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7330
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7331 buddy = gaim_find_buddy(gc->account, sn);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7332 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7333 "ssi: %s added you to their buddy list\n", sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
7334 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
7335
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7336 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
7337 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7338
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7339 static GList *oscar_chat_info(GaimConnection *gc) {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7340 GList *m = NULL;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7341 struct proto_chat_entry *pce;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7342
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7343 pce = g_new0(struct proto_chat_entry, 1);
9770
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9758
diff changeset
7344 pce->label = _("_Room:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7345 pce->identifier = "room";
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10472
diff changeset
7346 pce->required = TRUE;
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7347 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7348
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7349 pce = g_new0(struct proto_chat_entry, 1);
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7805
diff changeset
7350 pce->label = _("_Exchange:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7351 pce->identifier = "exchange";
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10472
diff changeset
7352 pce->required = TRUE;
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7353 pce->is_int = TRUE;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7354 pce->min = 4;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7355 pce->max = 20;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7356 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7357
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7358 return m;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7359 }
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7360
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7361 GHashTable *oscar_chat_info_defaults(GaimConnection *gc, const char *chat_name)
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7362 {
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7363 GHashTable *defaults;
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7364
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7365 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
7366
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7367 if (chat_name != NULL)
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7368 g_hash_table_insert(defaults, "room", g_strdup(chat_name));
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7369
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7370 return defaults;
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7371 }
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
7372
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
7373 static char *oscar_get_chat_name(GHashTable *data) {
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
7374 return g_strdup(g_hash_table_lookup(data, "room"));
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
7375 }
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
7376
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7377 static void oscar_join_chat(GaimConnection *gc, GHashTable *data) {
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7378 OscarData *od = (OscarData *)gc->proto_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
7379 aim_conn_t *cur;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7380 char *name, *exchange;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7381
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7382 name = g_hash_table_lookup(data, "room");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7383 exchange = g_hash_table_lookup(data, "exchange");
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
7384
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7385 if ((name == NULL) || (*name == '\0')) {
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7386 gaim_notify_error(gc, NULL, _("Invalid chat name specified."), NULL);
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7387 return;
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7388 }
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7389
11461
8e749b7c8ccc [gaim-migrate @ 13701]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11404
diff changeset
7390 gaim_debug_info("oscar",
8e749b7c8ccc [gaim-migrate @ 13701]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11404
diff changeset
7391 "Attempting to join chat room %s.\n", name);
8e749b7c8ccc [gaim-migrate @ 13701]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11404
diff changeset
7392
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7393 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
7394 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7395 "chatnav exists, creating room\n");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7396 aim_chatnav_createroom(od->sess, cur, name, atoi(exchange));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7397 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7398 /* this gets tricky */
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
7399 struct create_room *cr = g_new0(struct create_room, 1);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7400 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
7401 "chatnav does not exist, opening chatnav\n");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
7402 cr->exchange = atoi(exchange);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
7403 cr->name = g_strdup(name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7404 od->create_rooms = g_slist_append(od->create_rooms, cr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
7405 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7406 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7407 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7408
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7409 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
7410 OscarData *od = (OscarData *)gc->proto_data;
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
7411 struct chat_connection *ccon = find_oscar_chat(gc, id);
10404
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
7412
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
7413 if (ccon == NULL)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7414 return;
10404
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
7415
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
7416 aim_im_sendch2_chatinvite(od->sess, name, message ? message : "",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7417 ccon->exchange, ccon->name, 0x0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7418 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7419
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7420 static void
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7421 oscar_chat_leave(GaimConnection *gc, int id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7422 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7423 GaimConversation *conv;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7424 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7425
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7426 conv = gaim_find_chat(gc, id);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7427
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7428 g_return_if_fail(conv != NULL);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7429
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7430 gaim_debug_info("oscar", "Leaving chat room %s\n", conv->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7431
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
7432 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
7433 oscar_chat_kill(gc, cc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7434 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7435
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
7436 static int oscar_send_chat(GaimConnection *gc, int id, const char *message, GaimMessageFlags flags) {
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7437 OscarData *od = (OscarData *)gc->proto_data;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7438 GaimConversation *conv = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7439 struct chat_connection *c = NULL;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
7440 char *buf, *buf2;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7441 fu16_t charset, charsubset;
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
7442 char *charsetstr = NULL;
10111
8490f2e292a6 [gaim-migrate @ 11144]
Nathan Walp <nwalp@pidgin.im>
parents: 10098
diff changeset
7443 int len;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7444
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7445 if (!(conv = gaim_find_chat(gc, id)))
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
7446 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7447
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7448 if (!(c = find_oscar_chat_by_conv(gc, conv)))
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
7449 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7450
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7451 buf = gaim_strdup_withhtml(message);
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7452 len = strlen(buf);
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
7453
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
7454 if (strstr(buf, "<IMG "))
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
7455 gaim_conversation_write(conv, "",
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
7456 _("Your IM Image was not sent. "
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
7457 "You cannot send IM Images in AIM chats."),
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
7458 GAIM_MESSAGE_ERROR, time(NULL));
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
7459
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
7460 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
7461 if ((len > c->maxlen) || (len > c->maxvis)) {
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
7462 g_free(buf2);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
7463 return -E2BIG;
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
7464 }
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
7465
9831
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
7466 if (charset == AIM_CHARSET_ASCII)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
7467 charsetstr = "us-ascii";
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
7468 else if (charset == AIM_CHARSET_UNICODE)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
7469 charsetstr = "unicode-2-0";
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
7470 else if (charset == AIM_CHARSET_CUSTOM)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
7471 charsetstr = "iso-8859-1";
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
7472 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
7473 g_free(buf2);
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
7474
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
7475 return 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7476 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7477
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7478 static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7479 {
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
7480 if (!b || (b && b->name && b->name[0] == '+')) {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7481 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
7482 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7483 else
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7484 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7485 }
5646
48c63ee49961 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
7486
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7487 if (b != NULL && aim_sn_is_icq(b->name))
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7488 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7489 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7490 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7491
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
7492 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
7493 {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7494 GaimConnection *gc = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7495 OscarData *od = NULL;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7496 GaimAccount *account = NULL;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7497 GaimPresence *presence;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7498 GaimStatus *status;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7499 const char *status_id;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7500 char *emblems[4] = {NULL,NULL,NULL,NULL};
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7501 int i = 0;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7502 aim_userinfo_t *userinfo = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7503
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7504 if (b != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7505 account = b->account;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7506 if (account != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7507 gc = account->gc;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7508 if (gc != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7509 od = gc->proto_data;
7945
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
7510 if (od != NULL)
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
7511 userinfo = aim_locate_finduserinfo(od->sess, b->name);
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7512
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7513 presence = gaim_buddy_get_presence(b);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7514 status = gaim_presence_get_active_status(presence);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7515 status_id = gaim_status_get_id(status);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7516
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7517 if (gaim_presence_is_online(presence) == FALSE) {
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7518 char *gname;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7519 if ((b->name) && (od) && (od->sess->ssi.received_data) &&
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7520 (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) &&
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7521 (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7522 emblems[i++] = "notauthorized";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7523 } else {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7524 emblems[i++] = "offline";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7525 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7526 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
7527
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7528 if (b->name && aim_sn_is_icq(b->name)) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7529 if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7530 emblems[i++] = "invisible";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7531 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
7532 emblems[i++] = "freeforchat";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7533 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
7534 emblems[i++] = "dnd";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7535 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
7536 emblems[i++] = "na";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7537 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
7538 emblems[i++] = "occupied";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7539 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
7540 emblems[i++] = "away";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7541 } else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7542 emblems[i++] = "away";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7543 }
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7544
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7545 if (userinfo != NULL ) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7546 /* if (userinfo->flags & AIM_FLAG_UNCONFIRMED)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7547 emblems[i++] = "unconfirmed"; */
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
7548 if ((i < 4) && userinfo->flags & AIM_FLAG_ADMINISTRATOR)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7549 emblems[i++] = "admin";
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
7550 if ((i < 4) && userinfo->flags & AIM_FLAG_AOL)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7551 emblems[i++] = "aol";
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
7552 if ((i < 4) && userinfo->flags & AIM_FLAG_WIRELESS)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7553 emblems[i++] = "wireless";
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
7554 if ((i < 4) && userinfo->flags & AIM_FLAG_ACTIVEBUDDY)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7555 emblems[i++] = "activebuddy";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7556
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7557 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_HIPTOP))
7945
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
7558 emblems[i++] = "hiptop";
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
7559
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7560 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_SECUREIM))
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7561 emblems[i++] = "secure";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7562 }
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
7563
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7564 *se = emblems[0];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7565 *sw = emblems[1];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7566 *nw = emblems[2];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7567 *ne = emblems[3];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7568 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
7569
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7570 static char *oscar_tooltip_text(GaimBuddy *b) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7571 GaimConnection *gc = b->account->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7572 OscarData *od = gc->proto_data;
7045
237ad253dd34 [gaim-migrate @ 7608]
Mark Doliner <mark@kingant.net>
parents: 7038
diff changeset
7573 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
7574 GString *str = g_string_new("");
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7575
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7576 if (GAIM_BUDDY_IS_ONLINE(b)) {
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7577 GaimPresence *presence;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7578 GaimStatus *status;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7579 const char *message;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7580
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
7581 oscar_string_append_info(gc, str, "\n", b, userinfo);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
7582
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7583 presence = gaim_buddy_get_presence(b);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7584 status = gaim_presence_get_active_status(presence);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7585 message = gaim_status_get_attr_string(status, "message");
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7586
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7587 if (message != NULL) {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7588 if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_AVAILABLE) {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7589 /* Available status messages are plain text */
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7590 g_string_append_printf(str, "\n<b>%s:</b> %s", _("Status Message"), message);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7591 } else {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7592 /* Away messages are HTML */
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
7593 gchar *tmp1, *tmp2;
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
7594 tmp2 = gaim_markup_strip_html(message);
10732
c4cb90065e1d [gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents: 10715
diff changeset
7595 tmp1 = g_markup_escape_text(tmp2, -1);
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
7596 g_free(tmp2);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
7597 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
7598 g_free(tmp1);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
7599 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
7600 g_free(tmp2);
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
7601 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7602 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
7603 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
7604
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
7605 return g_string_free(str, FALSE);
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7606 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7607
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7608 static char *oscar_status_text(GaimBuddy *b)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7609 {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7610 GaimConnection *gc;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7611 OscarData *od;
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7612 GaimPresence *presence;
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7613 gchar *ret = NULL;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7614
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7615 gc = gaim_account_get_connection(gaim_buddy_get_account(b));
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7616 od = gc->proto_data;
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7617 presence = gaim_buddy_get_presence(b);
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7618
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7619 if (!gaim_presence_is_online(presence))
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7620 {
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7621 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
7622 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7623 ret = g_strdup(_("Not Authorized"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7624 else
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7625 ret = g_strdup(_("Offline"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7626 }
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7627 else if (gaim_presence_is_available(presence))
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7628 {
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7629 struct buddyinfo *bi;
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7630 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name));
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7631 if ((bi != NULL) && (bi->availmsg != NULL))
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7632 ret = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7633 else if (aim_sn_is_icq(b->name)) {
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7634 GaimStatus *status = gaim_presence_get_active_status(presence);
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7635 ret = g_strdup(gaim_status_get_name(status));
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7636 }
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7637 }
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7638 else
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7639 {
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7640 if (aim_sn_is_icq(b->name)) {
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7641 GaimStatus *status = gaim_presence_get_active_status(presence);
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7642 ret = g_strdup(gaim_status_get_name(status));
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
7643 } else
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7644 ret = g_strdup(_("Away"));
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
7645 }
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7646
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7647 return ret;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7648 }
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
7649
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7650
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
7651 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
7652 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7653 OscarData *od = gc->proto_data;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7654 va_list ap;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7655 fu16_t type;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7656 fu8_t flags = 0, length = 0;
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
7657 guchar *md5 = NULL;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7658
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7659 va_start(ap, fr);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7660 type = va_arg(ap, int);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7661
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7662 switch(type) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7663 case 0x0000:
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7664 case 0x0001: {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7665 flags = va_arg(ap, int);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7666 length = va_arg(ap, int);
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
7667 md5 = va_arg(ap, guchar *);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7668
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7669 if (flags == 0x41) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7670 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
7671 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7672 od->set_icon = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7673 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7674 } else {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7675 struct stat st;
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
7676 char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc)));
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7677 if (iconfile == NULL) {
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
7678 aim_ssi_delicon(od->sess);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
7679 } else if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
7680 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
7681 FILE *file = g_fopen(iconfile, "rb");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7682 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
7683 /* XXX - Use g_file_get_contents()? */
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7684 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7685 fclose(file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7686 gaim_debug_info("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7687 "Uploading icon to icon server\n");
6879
594682101ba6 [gaim-migrate @ 7425]
Mark Doliner <mark@kingant.net>
parents: 6873
diff changeset
7688 aim_bart_upload(od->sess, buf, st.st_size);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7689 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7690 gaim_debug_error("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7691 "Can't open buddy icon file!\n");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7692 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
7693 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7694 gaim_debug_error("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7695 "Can't stat buddy icon file!\n");
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7696 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
7697 g_free(iconfile);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7698 }
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
7699 } else if (flags == 0x81) {
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
7700 char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc)));
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
7701 if (iconfile == NULL)
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
7702 aim_ssi_delicon(od->sess);
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
7703 else {
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
7704 aim_ssi_seticon(od->sess, md5, length);
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
7705 g_free(iconfile);
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
7706 }
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
7707 }
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7708 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7709
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7710 case 0x0002: { /* We just set an "available" message? */
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7711 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7712 }
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7713
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7714 va_end(ap);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
7715
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
7716 return 0;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
7717 }
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
7718
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7719 static void oscar_set_permit_deny(GaimConnection *gc) {
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7720 GaimAccount *account = gaim_connection_get_account(gc);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7721 OscarData *od = (OscarData *)gc->proto_data;
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
7722
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7723 if (od->sess->ssi.received_data) {
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7724 switch (account->perm_deny) {
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7725 case GAIM_PRIVACY_ALLOW_ALL:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7726 aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7727 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7728 case GAIM_PRIVACY_ALLOW_BUDDYLIST:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7729 aim_ssi_setpermdeny(od->sess, 0x05, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7730 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7731 case GAIM_PRIVACY_ALLOW_USERS:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7732 aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7733 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7734 case GAIM_PRIVACY_DENY_ALL:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7735 aim_ssi_setpermdeny(od->sess, 0x02, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7736 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7737 case GAIM_PRIVACY_DENY_USERS:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7738 aim_ssi_setpermdeny(od->sess, 0x04, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7739 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7740 default:
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7741 aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff);
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7742 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7743 }
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
7744 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7745 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7746
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7747 static void oscar_add_permit(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7748 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7749 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
7750 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
7751 aim_ssi_addpermit(od->sess, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7752 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7753
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7754 static void oscar_add_deny(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7755 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7756 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
7757 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
7758 aim_ssi_adddeny(od->sess, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7759 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7760
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7761 static void oscar_rem_permit(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7762 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7763 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
7764 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
7765 aim_ssi_delpermit(od->sess, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7766 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7767
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
7768 static void oscar_rem_deny(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7769 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
7770 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
7771 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
7772 aim_ssi_deldeny(od->sess, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7773 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7774
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7775 static GList *
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7776 oscar_status_types(GaimAccount *account)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7777 {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7778 GList *status_types = NULL;
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7779 GaimStatusType *type;
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
7780
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
7781 g_return_val_if_fail(account != NULL, NULL);
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
7782
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7783 /* Oscar-common status types */
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7784 type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7785 OSCAR_STATUS_ID_OFFLINE,
10400
6a043ae92db6 [gaim-migrate @ 11631]
Sean Egan <seanegan@gmail.com>
parents: 10396
diff changeset
7786 _("Offline"), FALSE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7787 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7788
10198
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7789 type = gaim_status_type_new_with_attrs(GAIM_STATUS_AVAILABLE,
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7790 OSCAR_STATUS_ID_AVAILABLE,
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7791 _("Available"), TRUE, TRUE, FALSE,
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7792 "message", _("Message"),
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7793 gaim_value_new(GAIM_TYPE_STRING), NULL);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7794 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7795
10195
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7796 type = gaim_status_type_new_with_attrs(GAIM_STATUS_AWAY,
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7797 OSCAR_STATUS_ID_AWAY,
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7798 _("Away"), TRUE, TRUE, FALSE,
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7799 "message", _("Message"),
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
7800 gaim_value_new(GAIM_TYPE_STRING), NULL);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7801 status_types = g_list_append(status_types, type);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7802
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7803 type = gaim_status_type_new_full(GAIM_STATUS_HIDDEN,
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7804 OSCAR_STATUS_ID_INVISIBLE,
10198
137a880153ba [gaim-migrate @ 11315]
Mark Doliner <mark@kingant.net>
parents: 10197
diff changeset
7805 _("Invisible"), TRUE, TRUE, FALSE);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7806 status_types = g_list_append(status_types, type);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7807
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7808 if (aim_sn_is_icq(gaim_account_get_username(account)) == FALSE )
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7809 return status_types;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7810
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7811 /* ICQ-specific status types */
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
7812
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7813 type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7814 OSCAR_STATUS_ID_FREE4CHAT,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7815 _("Free For Chat"), TRUE, TRUE, FALSE);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
7816 status_types = g_list_append(status_types, type);
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
7817
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7818 type = gaim_status_type_new_full(GAIM_STATUS_UNAVAILABLE,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7819 OSCAR_STATUS_ID_OCCUPIED,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7820 _("Occupied"), TRUE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7821 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7822
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7823 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7824 OSCAR_STATUS_ID_DND,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7825 _("Do Not Disturb"), TRUE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7826 status_types = g_list_append(status_types, type);
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7827
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7828 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7829 OSCAR_STATUS_ID_NA,
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
7830 _("Not Available"), TRUE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
7831 status_types = g_list_append(status_types, type);
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7832
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
7833 return status_types;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7834 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7835
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7836 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
7837 GaimConnection *gc = data->gc;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7838 OscarData *od = gc->proto_data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7839 GaimBuddy *b;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7840 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7841
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7842 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
7843 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7844 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7845 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7846
12088
980c877bd238 [gaim-migrate @ 14385]
Mark Doliner <mark@kingant.net>
parents: 12049
diff changeset
7847 if (!(g = gaim_buddy_get_group(b))) {
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7848 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7849 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7850 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7851
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7852 aim_ssi_editcomment(od->sess, g->name, data->name, text);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7853
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7854 if (!aim_sncmp(data->name, gc->account->username))
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7855 gaim_check_comment(od, text);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
7856
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7857 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7858 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7859
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7860 static void oscar_buddycb_edit_comment(GaimBlistNode *node, gpointer ignore) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7861
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7862 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7863 GaimConnection *gc;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7864 OscarData *od;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7865 struct name_data *data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7866 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7867 char *comment;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7868 gchar *comment_utf8;
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7869 gchar *title;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7870
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7871 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7872
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7873 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7874 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7875 od = gc->proto_data;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7876
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7877 data = g_new(struct name_data, 1);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7878
12088
980c877bd238 [gaim-migrate @ 14385]
Mark Doliner <mark@kingant.net>
parents: 12049
diff changeset
7879 if (!(g = gaim_buddy_get_group(buddy)))
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7880 return;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7881 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
7882 comment_utf8 = comment ? gaim_utf8_try_convert(comment) : NULL;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7883
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7884 data->gc = gc;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7885 data->name = g_strdup(buddy->name);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7886 data->nick = NULL;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7887
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7888 title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7889 gaim_request_input(gc, title, _("Buddy Comment:"), NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
7890 comment_utf8, TRUE, FALSE, NULL,
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7891 _("OK"), G_CALLBACK(oscar_ssi_editcomment),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7892 _("Cancel"), G_CALLBACK(oscar_free_name_data),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7893 data);
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
7894 g_free(title);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7895
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7896 free(comment);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7897 g_free(comment_utf8);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7898 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7899
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7900 static GList *oscar_buddy_menu(GaimBuddy *buddy) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7901
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7902 GaimConnection *gc = gaim_account_get_connection(buddy->account);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
7903 OscarData *od = gc->proto_data;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7904
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7905 GList *m = NULL;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7906 GaimBlistNodeAction *act;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7907
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7908 act = gaim_blist_node_action_new(_("Edit Buddy Comment"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7909 oscar_buddycb_edit_comment, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7910 m = g_list_append(m, act);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
7911
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7912 if (od->icq) {
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
7913 #if 0
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7914 act = gaim_blist_node_action_new(_("Get Status Msg"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7915 oscar_get_icqstatusmsg, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7916 m = g_list_append(m, act);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
7917 #endif
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7918 } else {
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
7919 aim_userinfo_t *userinfo;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7920 userinfo = aim_locate_finduserinfo(od->sess, buddy->name);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7921
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7922 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
7923 GAIM_BUDDY_IS_ONLINE(buddy)) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7924
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
7925 if (userinfo->capabilities & AIM_CAPS_DIRECTIM) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7926 act = gaim_blist_node_action_new(_("Direct IM"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7927 oscar_ask_direct_im, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7928 m = g_list_append(m, act);
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
7929 }
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
7930 #if 0
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
7931 if (userinfo->capabilities & AIM_CAPS_GETFILE) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7932 act = gaim_blist_node_action_new(_("Get File"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7933 oscar_ask_getfile, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7934 m = g_list_append(m, act);
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
7935 }
4826
e6654fab588b [gaim-migrate @ 5151]
Mark Doliner <mark@kingant.net>
parents: 4825
diff changeset
7936 #endif
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7937 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7938 }
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
7939
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
7940 if (od->sess->ssi.received_data) {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7941 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
7942 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
7943 act = gaim_blist_node_action_new(_("Re-request Authorization"),
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10654
diff changeset
7944 gaim_auth_sendrequest_menu, NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7945 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7946 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
7947 }
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
7948
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7949 return m;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7950 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
7951
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7952
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7953 static GList *oscar_blist_node_menu(GaimBlistNode *node) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7954 if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7955 return oscar_buddy_menu((GaimBuddy *) node);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7956 } else {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7957 return NULL;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7958 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7959 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
7960
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7961 static void
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7962 oscar_icq_privacy_opts(GaimConnection *gc, GaimRequestFields *fields)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7963 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7964 OscarData *od = gc->proto_data;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7965 GaimAccount *account = gaim_connection_get_account(gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7966 GaimRequestField *f;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7967 gboolean auth, hide_ip, web_aware;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7968
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7969 f = gaim_request_fields_get_field(fields, "authorization");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7970 auth = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7971
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7972 f = gaim_request_fields_get_field(fields, "hide_ip");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7973 hide_ip = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7974
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7975 f = gaim_request_fields_get_field(fields, "web_aware");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7976 web_aware = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7977
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7978 gaim_account_set_bool(account, "authorization", auth);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7979 gaim_account_set_bool(account, "hide_ip", hide_ip);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7980 gaim_account_set_bool(account, "web_aware", web_aware);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7981
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7982 aim_icq_setsecurity(od->sess, auth, web_aware, hide_ip);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7983 }
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7984
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7985 static void
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7986 oscar_show_icq_privacy_opts(GaimPluginAction *action)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7987 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7988 GaimConnection *gc = (GaimConnection *) action->context;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7989 GaimAccount *account = gaim_connection_get_account(gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7990 GaimRequestFields *fields;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7991 GaimRequestFieldGroup *g;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7992 GaimRequestField *f;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7993 gboolean auth, hide_ip, web_aware;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7994
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7995 auth = gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7996 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
7997 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
7998
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
7999 fields = gaim_request_fields_new();
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8000
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8001 g = gaim_request_field_group_new(NULL);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8002
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8003 f = gaim_request_field_bool_new("authorization", _("Require authorization"), auth);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8004 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8005
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8006 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
8007 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8008
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8009 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
8010 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8011
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8012 gaim_request_fields_add_group(fields, g);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8013
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8014 gaim_request_fields(gc, _("ICQ Privacy Options"), _("ICQ Privacy Options"),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8015 NULL, fields,
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8016 _("OK"), G_CALLBACK(oscar_icq_privacy_opts),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8017 _("Cancel"), NULL, gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8018 }
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
8019
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
8020 static void oscar_format_screenname(GaimConnection *gc, const char *nick) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8021 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
8022 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
8023 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8024 od->setnick = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8025 od->newsn = g_strdup(nick);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8026 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8027 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8028 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
8029 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8030 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
8031 gaim_notify_error(gc, NULL, _("The new formatting is invalid."),
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
8032 _("Screen name formatting can change only capitalization and whitespace."));
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8033 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8034 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8035
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8036 static void oscar_show_format_screenname(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8037 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8038 GaimConnection *gc = (GaimConnection *) action->context;
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
8039 gaim_request_input(gc, NULL, _("New screen name formatting:"), NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
8040 gaim_connection_get_display_name(gc), FALSE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
8041 _("OK"), G_CALLBACK(oscar_format_screenname),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
8042 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
8043 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8044 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8045
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8046 static void oscar_confirm_account(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8047 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8048 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8049 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8050 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
8051
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8052 if (conn) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8053 aim_admin_reqconfirm(od->sess, conn);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8054 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8055 od->conf = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8056 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8057 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8058 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8059
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8060 static void oscar_show_email(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8061 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8062 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8063 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8064 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
8065
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8066 if (conn) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8067 aim_admin_getinfo(od->sess, conn, 0x11);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8068 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8069 od->reqemail = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8070 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8071 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8072 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8073
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
8074 static void oscar_change_email(GaimConnection *gc, const char *email)
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8075 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8076 OscarData *od = gc->proto_data;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8077 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
8078
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8079 if (conn) {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8080 aim_admin_setemail(od->sess, conn, email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8081 } else {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8082 od->setemail = TRUE;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8083 od->email = g_strdup(email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8084 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8085 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8086 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
8087
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8088 static void oscar_show_change_email(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8089 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8090 GaimConnection *gc = (GaimConnection *) action->context;
6035
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
8091 gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
8092 FALSE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
8093 _("OK"), G_CALLBACK(oscar_change_email),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
8094 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
8095 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8096 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8097
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8098 static void oscar_show_awaitingauth(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8099 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8100 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8101 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8102 gchar *nombre, *text, *tmp;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8103 GaimBlistNode *gnode, *cnode, *bnode;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8104 int num=0;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8105
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8106 text = g_strdup("");
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8107
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
8108 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8109 GaimGroup *group = (GaimGroup *)gnode;
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
8110 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
8111 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8112 for (cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8113 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
8114 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8115 for (bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8116 GaimBuddy *buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8117 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8118 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8119 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
8120 if (gaim_buddy_get_alias_only(buddy))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
8121 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
8122 else
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8123 nombre = g_strdup_printf(" %s", buddy->name);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8124 tmp = g_strdup_printf("%s%s<br>", text, nombre);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8125 g_free(text);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8126 text = tmp;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8127 g_free(nombre);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8128 num++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
8129 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8130 }
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
8131 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8132 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8133
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8134 if (!num) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8135 g_free(text);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8136 text = g_strdup(_("<i>you are not waiting for authorization</i>"));
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8137 }
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8138
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8139 gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8140 "the following buddies"), _("You can re-request "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8141 "authorization from these buddies by "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8142 "right-clicking on them and selecting "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
8143 "\"Re-request Authorization.\""), text, NULL, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8144 g_free(text);
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
8145 }
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
8146
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8147 static void search_by_email_cb(GaimConnection *gc, const char *email)
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8148 {
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
8149 OscarData *od = (OscarData *)gc->proto_data;
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
8150
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
8151 aim_search_address(od->sess, od->conn, email);
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8152 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8153
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8154 static void oscar_show_find_email(GaimPluginAction *action)
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8155 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8156 GaimConnection *gc = (GaimConnection *) action->context;
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8157 gaim_request_input(gc, _("Find Buddy by E-mail"),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8158 _("Search for a buddy by e-mail address"),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8159 _("Type the e-mail address of the buddy you are "
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8160 "searching for."),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
8161 NULL, FALSE, FALSE, NULL,
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8162 _("Search"), G_CALLBACK(search_by_email_cb),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8163 _("Cancel"), NULL, gc);
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8164 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
8165
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8166 static void oscar_show_set_info(GaimPluginAction *action)
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
8167 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8168 GaimConnection *gc = (GaimConnection *) action->context;
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
8169 gaim_account_request_change_user_info(gaim_connection_get_account(gc));
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
8170 }
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
8171
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8172 static void oscar_show_set_info_icqurl(GaimPluginAction *action)
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
8173 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8174 GaimConnection *gc = (GaimConnection *) action->context;
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
8175 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
8176 }
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
8177
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8178 static void oscar_change_pass(GaimPluginAction *action)
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
8179 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8180 GaimConnection *gc = (GaimConnection *) action->context;
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
8181 gaim_account_request_change_password(gaim_connection_get_account(gc));
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
8182 }
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
8183
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8184 static void oscar_show_chpassurl(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8185 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8186 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8187 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
8188 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
8189 gaim_notify_uri(gc, substituted);
5517
e9b9fbf89c42 [gaim-migrate @ 5916]
Mark Doliner <mark@kingant.net>
parents: 5498
diff changeset
8190 g_free(substituted);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8191 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8192
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8193 static void oscar_show_imforwardingurl(GaimPluginAction *action)
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
8194 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8195 GaimConnection *gc = (GaimConnection *) action->context;
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
8196 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
8197 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
8198
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8199 static void oscar_set_icon(GaimConnection *gc, const char *iconfile)
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8200 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8201 OscarData *od = gc->proto_data;
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
8202 aim_session_t *sess = od->sess;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8203 FILE *file;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8204 struct stat st;
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
8205
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
8206 if (iconfile == NULL) {
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
8207 aim_ssi_delicon(od->sess);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
8208 } else if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
8209 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
8210 file = g_fopen(iconfile, "rb");
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8211 if (file)
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8212 {
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8213 GaimCipher *cipher;
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8214 GaimCipherContext *context;
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
8215 guchar md5[16];
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8216 int len;
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8217
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
8218 /* XXX - Use g_file_get_contents()? */
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8219 len = fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
8220 fclose(file);
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8221
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8222 cipher = gaim_ciphers_find_cipher("md5");
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8223 context = gaim_cipher_context_new(cipher, NULL);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8224 gaim_cipher_context_append(context, buf, len);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8225 gaim_cipher_context_digest(context, 16, md5, NULL);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8226 gaim_cipher_context_destroy(context);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
8227
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8228 aim_ssi_seticon(sess, md5, 16);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8229 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
8230 gaim_debug_error("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8231 "Can't open buddy icon file!\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8232 g_free(buf);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8233 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
8234 gaim_debug_error("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8235 "Can't stat buddy icon file!\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8236 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8237
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
8238
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8239 static GList *oscar_actions(GaimPlugin *plugin, gpointer context)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8240 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8241 GaimConnection *gc = (GaimConnection *) context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8242 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8243 GList *m = NULL;
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8244 GaimPluginAction *act;
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8245
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8246 act = gaim_plugin_action_new(_("Set User Info..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8247 oscar_show_set_info);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8248 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8249
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8250 if (od->icq)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8251 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8252 act = gaim_plugin_action_new(_("Set User Info (URL)..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8253 oscar_show_set_info_icqurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8254 m = g_list_append(m, act);
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
8255 }
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
8256
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8257 act = gaim_plugin_action_new(_("Change Password..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8258 oscar_change_pass);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8259 m = g_list_append(m, act);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8260
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8261 if (od->sess->authinfo->chpassurl != NULL)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8262 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8263 act = gaim_plugin_action_new(_("Change Password (URL)"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8264 oscar_show_chpassurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8265 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8266
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8267 act = gaim_plugin_action_new(_("Configure IM Forwarding (URL)"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8268 oscar_show_imforwardingurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8269 m = g_list_append(m, act);
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
8270 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
8271
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8272 m = g_list_append(m, NULL);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8273
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8274 if (od->icq)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8275 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8276 /* ICQ actions */
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8277 act = gaim_plugin_action_new(_("Show privacy options..."),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8278 oscar_show_icq_privacy_opts);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8279 m = g_list_append(m, act);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8280 }
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8281 else
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
8282 {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8283 /* AIM actions */
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8284 act = gaim_plugin_action_new(_("Format Screen Name..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8285 oscar_show_format_screenname);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8286 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8287
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8288 act = gaim_plugin_action_new(_("Confirm Account"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8289 oscar_confirm_account);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8290 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8291
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8292 act = gaim_plugin_action_new(_("Display Currently Registered Address"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8293 oscar_show_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8294 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8295
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8296 act = gaim_plugin_action_new(_("Change Currently Registered Address..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8297 oscar_show_change_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8298 m = g_list_append(m, act);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8299 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8300
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8301 m = g_list_append(m, NULL);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8302
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8303 act = gaim_plugin_action_new(_("Show Buddies Awaiting Authorization"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8304 oscar_show_awaitingauth);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8305 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8306
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8307 m = g_list_append(m, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8308
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8309 act = gaim_plugin_action_new(_("Search for Buddy by Email..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8310 oscar_show_find_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8311 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
8312
8591
f96795b786d2 [gaim-migrate @ 9342]
Mark Doliner <mark@kingant.net>
parents: 8590
diff changeset
8313 #if 0
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8314 act = gaim_plugin_action_new(_("Search for Buddy by Information"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8315 show_find_info);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8316 m = g_list_append(m, act);
8591
f96795b786d2 [gaim-migrate @ 9342]
Mark Doliner <mark@kingant.net>
parents: 8590
diff changeset
8317 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8318
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8319 return m;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8320 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8321
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
8322 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
8323 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8324 OscarData *od = gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8325
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8326 if (od->icq) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8327 aim_icq_changepasswd(od->sess, new);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8328 } else {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8329 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
8330 if (conn) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8331 aim_admin_changepasswd(od->sess, conn, new, old);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8332 } else {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8333 od->chpass = TRUE;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8334 od->oldp = g_strdup(old);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8335 od->newp = g_strdup(new);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8336 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
8337 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8338 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8339 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8340
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
8341 static void oscar_convo_closed(GaimConnection *gc, const char *who)
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
8342 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
8343 OscarData *od = gc->proto_data;
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
8344 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
8345
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
8346 if (!dim)
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
8347 return;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
8348
8971
f831a38eb6ba [gaim-migrate @ 9745]
Mark Doliner <mark@kingant.net>
parents: 8962
diff changeset
8349 oscar_direct_im_destroy(od, dim);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
8350 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
8351
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8352 static void
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8353 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
8354 {
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8355 GaimConnection *gc = data;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8356 OscarData *od = gc->proto_data;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8357 aim_session_t *sess = od->sess;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8358 fu32_t presence;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8359
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8360 presence = aim_ssi_getpresence(sess->ssi.local);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8361
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8362 if (value) {
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
8363 /* 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
8364 /* Stu thinks it's the second one. */
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
8365 /* presence |= 0x00400000; */
9971
ab5db2c5da79 [gaim-migrate @ 10882]
Mark Doliner <mark@kingant.net>
parents: 9948
diff changeset
8366 presence &= ~0x00020000;
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8367 aim_ssi_setpresence(sess, presence);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8368 } else {
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
8369 /* presence &= ~0x00400000; */
9971
ab5db2c5da79 [gaim-migrate @ 10882]
Mark Doliner <mark@kingant.net>
parents: 9948
diff changeset
8370 presence |= 0x00020000;
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8371 aim_ssi_setpresence(sess, presence);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8372 }
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8373 }
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8374
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8375 static GaimPluginPrefFrame *
9936
3578cec797db [gaim-migrate @ 10828]
Mark Doliner <mark@kingant.net>
parents: 9935
diff changeset
8376 get_plugin_pref_frame(GaimPlugin *plugin)
3578cec797db [gaim-migrate @ 10828]
Mark Doliner <mark@kingant.net>
parents: 9935
diff changeset
8377 {
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8378 GaimPluginPrefFrame *frame;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8379 GaimPluginPref *ppref;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8380
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8381 frame = gaim_plugin_pref_frame_new();
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8382
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8383 #if USE_PRPL_PREFERENCES
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8384 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
8385 gaim_plugin_pref_frame_add(frame, ppref);
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8386
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8387 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
8388 gaim_plugin_pref_frame_add(frame, ppref);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8389 #endif
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8390
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8391 ppref = gaim_plugin_pref_new_with_label(_("File Transfers"));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8392 gaim_plugin_pref_frame_add(frame, ppref);
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8393
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8394 ppref = gaim_plugin_pref_new_with_name_and_label(
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8395 "/plugins/prpl/oscar/use_rv_proxy",
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8396 _("Use AIM/ICQ proxy server (Slower/More Secure/Usually Works)"));
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8397 gaim_plugin_pref_frame_add(frame, ppref);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8398
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8399 return frame;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8400 }
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8401
11153
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8402 static const char *
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8403 oscar_normalize(const GaimAccount *account, const char *str)
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8404 {
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8405 static char buf[BUF_LEN];
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8406 char *tmp1, *tmp2;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8407 int i, j;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8408
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8409 g_return_val_if_fail(str != NULL, NULL);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8410
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8411 strncpy(buf, str, BUF_LEN);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8412 for (i=0, j=0; buf[j]; i++, j++)
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8413 {
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8414 while (buf[j] == ' ')
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8415 j++;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8416 buf[i] = buf[j];
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8417 }
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8418 buf[i] = '\0';
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8419
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8420 tmp1 = g_utf8_strdown(buf, -1);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8421 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8422 g_snprintf(buf, sizeof(buf), "%s", tmp2);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8423 g_free(tmp2);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8424 g_free(tmp1);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8425
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8426 return buf;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8427 }
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8428
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8429 static GaimPluginProtocolInfo prpl_info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8430 {
9308
b3bda982996b [gaim-migrate @ 10116]
Sean Egan <seanegan@gmail.com>
parents: 9295
diff changeset
8431 OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE,
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8432 NULL, /* user_splits */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8433 NULL, /* protocol_options */
10674
9aa1d4adf3e9 [gaim-migrate @ 12214]
Nathan Walp <nwalp@pidgin.im>
parents: 10662
diff changeset
8434 {"jpeg,gif,bmp,ico", 48, 48, 50, 50,
9aa1d4adf3e9 [gaim-migrate @ 12214]
Nathan Walp <nwalp@pidgin.im>
parents: 10662
diff changeset
8435 GAIM_ICON_SCALE_SEND | GAIM_ICON_SCALE_DISPLAY}, /* icon_spec */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8436 oscar_list_icon, /* list_icon */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8437 oscar_list_emblems, /* list_emblems */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8438 oscar_status_text, /* status_text */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8439 oscar_tooltip_text, /* tooltip_text */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
8440 oscar_status_types, /* status_types */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8441 oscar_blist_node_menu, /* blist_node_menu */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8442 oscar_chat_info, /* chat_info */
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
8443 oscar_chat_info_defaults, /* chat_info_defaults */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8444 oscar_login, /* login */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8445 oscar_close, /* close */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8446 oscar_send_im, /* send_im */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8447 oscar_set_info, /* set_info */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8448 oscar_send_typing, /* send_typing */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8449 oscar_get_info, /* get_info */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
8450 oscar_set_status, /* set_status */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8451 oscar_set_idle, /* set_idle */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8452 oscar_change_passwd, /* change_passwd */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8453 oscar_add_buddy, /* add_buddy */
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
8454 NULL, /* add_buddies */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8455 oscar_remove_buddy, /* remove_buddy */
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
8456 NULL, /* remove_buddies */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8457 oscar_add_permit, /* add_permit */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8458 oscar_add_deny, /* add_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8459 oscar_rem_permit, /* rem_permit */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8460 oscar_rem_deny, /* rem_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8461 oscar_set_permit_deny, /* set_permit_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8462 oscar_join_chat, /* join_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8463 NULL, /* reject_chat */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
8464 oscar_get_chat_name, /* get_chat_name */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8465 oscar_chat_invite, /* chat_invite */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8466 oscar_chat_leave, /* chat_leave */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8467 NULL, /* chat_whisper */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8468 oscar_send_chat, /* chat_send */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8469 oscar_keepalive, /* keepalive */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8470 NULL, /* register_user */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8471 NULL, /* get_cb_info */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8472 NULL, /* get_cb_away */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8473 oscar_alias_buddy, /* alias_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8474 oscar_move_buddy, /* group_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8475 oscar_rename_group, /* rename_group */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8476 NULL, /* buddy_free */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8477 oscar_convo_closed, /* convo_closed */
11153
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
8478 oscar_normalize, /* normalize */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8479 oscar_set_icon, /* set_buddy_icon */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8480 NULL, /* remove_group */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8481 NULL, /* get_cb_real_name */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8482 NULL, /* set_chat_topic */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8483 NULL, /* find_blist_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8484 NULL, /* roomlist_get_list */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8485 NULL, /* roomlist_cancel */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8486 NULL, /* roomlist_expand_category */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
8487 oscar_can_receive_file, /* can_receive_file */
12143
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
8488 oscar_send_file, /* send_file */
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
8489 oscar_new_xfer, /* new_xfer */
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
8490 NULL, /* whiteboard ops */
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
8491 NULL /* media ops */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8492 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8493
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8494 static GaimPluginUiInfo prefs_info = {
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8495 get_plugin_pref_frame
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8496 };
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8497
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8498 static GaimPluginInfo info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8499 {
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
8500 GAIM_PLUGIN_MAGIC,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
8501 GAIM_MAJOR_VERSION,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
8502 GAIM_MINOR_VERSION,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8503 GAIM_PLUGIN_PROTOCOL, /**< type */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8504 NULL, /**< ui_requirement */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8505 0, /**< flags */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8506 NULL, /**< dependencies */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8507 GAIM_PRIORITY_DEFAULT, /**< priority */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8508
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8509 "prpl-oscar", /**< id */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8510 "AIM/ICQ", /**< name */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8511 VERSION, /**< version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8512 /** summary */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8513 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8514 /** description */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8515 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8516 NULL, /**< author */
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
8517 GAIM_WEBSITE, /**< homepage */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8518
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8519 NULL, /**< load */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8520 NULL, /**< unload */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8521 NULL, /**< destroy */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8522
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8523 NULL, /**< ui_info */
8993
294ae6548d4e [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8985
diff changeset
8524 &prpl_info, /**< extra_info */
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8525 &prefs_info,
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
8526 oscar_actions
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8527 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8528
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8529 static void
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
8530 init_plugin(GaimPlugin *plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
8531 {
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
8532 GaimAccountOption *option;
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
8533
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
8534 option = gaim_account_option_string_new(_("Auth host"), "server", OSCAR_DEFAULT_LOGIN_SERVER);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
8535 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
8536
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
8537 option = gaim_account_option_int_new(_("Auth port"), "port", OSCAR_DEFAULT_LOGIN_PORT);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
8538 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
8539
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
8540 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
8541 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
8542
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8543 /* Preferences */
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8544 gaim_prefs_add_none("/plugins/prpl/oscar");
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
8545 gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE);
9942
3941c39ccff5 [gaim-migrate @ 10834]
Mark Doliner <mark@kingant.net>
parents: 9936
diff changeset
8546 gaim_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
8547 gaim_prefs_add_bool("/plugins/prpl/oscar/use_rv_proxy", FALSE);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8548 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8549
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
8550 GAIM_INIT_PLUGIN(oscar, init_plugin, info);