annotate src/protocols/oscar/oscar.c @ 7805:5f0bb52c0609

[gaim-migrate @ 8452] File transfer changes from marv. This fixes various ft related bugs, including: * Sometimes clicking cancel on a send would crash. * We seemed to leak the GaimXfer most of the time. * Choosing to not overwrite the file would cancel the receive altogether. This should fix all these issues. It would be nice if someone (SimGuy?) could test this for me, especially on windows, to make sure i didn't break anything. Jabber ft is untested, althoughi didn't make any changes in the jabber source. So, it should still work, i just can't comfirm it. Yahoo and OSCAR do still work. Amoung other things, this patch impliments some reference counting on the GaimXfer, so the ui can keep it around a while if it wants, without leaking it because we're afraid to destroy it. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Mon, 08 Dec 2003 04:58:07 +0000
parents 61b5d682ddb4
children 0555e59dfba9
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
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
7 * Some code copyright (C) 2001-2003, Mark Doliner <thekingant@users.sourceforge.net>
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
8 *
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
9 * Most libfaim code copyright (C) 1998-2001 Adam Fritzler <afritz@auk.cx>
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
10 * Some libfaim code copyright (C) 2001-2003 Mark Doliner <thekingant@users.sourceforge.net>
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 * (at your option) any later version.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 * GNU General Public License for more details.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
27 #include "internal.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
28
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
29 #include "account.h"
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
30 #include "accountopt.h"
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
31 #include "buddyicon.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
32 #include "conversation.h"
7083
3100a6e03644 [gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents: 7082
diff changeset
33 #include "core.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
34 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
35 #include "ft.h"
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
36 #include "imgstore.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
37 #include "multi.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
38 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
39 #include "privacy.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 #include "prpl.h"
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
41 #include "proxy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
42 #include "request.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
43 #include "util.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
44
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
45 #include "aim.h"
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
46 #include "md5.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
47
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
48 #define UC_AOL 0x02
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
49 #define UC_ADMIN 0x04
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
50 #define UC_UNCONFIRMED 0x08
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
51 #define UC_NORMAL 0x10
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
52 #define UC_AB 0x20
3079
955f52bbcf8a [gaim-migrate @ 3093]
Sean Egan <seanegan@gmail.com>
parents: 3074
diff changeset
53 #define UC_WIRELESS 0x40
6318
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
54 #define UC_HIPTOP 0x80
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
55
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
57
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
58 #define OSCAR_CONNECT_STEPS 6
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
59
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
60 static GaimPlugin *my_protocol = NULL;
4249
9c7fcb211886 [gaim-migrate @ 4499]
Mark Doliner <mark@kingant.net>
parents: 4246
diff changeset
61
7376
0721e3fe57c9 [gaim-migrate @ 7971]
Mark Doliner <mark@kingant.net>
parents: 7366
diff changeset
62 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
63 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
64
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
65 static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02};
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
66 static fu8_t features_icq[] = {0x01, 0x06};
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
67
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
68 typedef struct _OscarData OscarData;
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
69 struct _OscarData {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
70 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
71 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
72
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
73 guint cnpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
74 guint paspa;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
75 guint emlpa;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
76 guint icopa;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
77
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
78 gboolean iconconnecting;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
79 gboolean set_icon;
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
80
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
81 GSList *create_rooms;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83 gboolean conf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
84 gboolean reqemail;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
85 gboolean setemail;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
86 char *email;
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
87 gboolean setnick;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
88 char *newsn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89 gboolean chpass;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 char *oldp;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
91 char *newp;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
92
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 GSList *oscar_chats;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
94 GSList *direct_ims;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
95 GSList *file_transfers;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
96 GHashTable *buddyinfo;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
97 GSList *requesticon;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
99 gboolean killme;
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
100 gboolean icq;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
101 guint icontimer;
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
102 guint getblisttimer;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
103
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
104 struct {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
105 guint maxwatchers; /* max users who can watch you */
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
106 guint maxbuddies; /* max users you can watch */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
107 guint maxgroups; /* max groups in server list */
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
108 guint maxpermits; /* max users on permit list */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
109 guint maxdenies; /* max users on deny list */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
110 guint maxsiglen; /* max size (bytes) of profile */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
111 guint maxawaymsglen; /* max size (bytes) of posted away message */
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
112 } rights;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
113 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
114
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
115 struct create_room {
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
116 char *name;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
117 int exchange;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
118 };
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
119
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
120 struct chat_connection {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
121 char *name;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
122 char *show; /* AOL did something funny to us */
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
123 fu16_t exchange;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
124 fu16_t instance;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125 int fd; /* this is redundant since we have the conn below */
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
126 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
127 int inpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
128 int id;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
129 GaimConnection *gc; /* i hate this. */
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
130 GaimConversation *cnv; /* bah. */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
131 int maxlen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
132 int maxvis;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
133 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
134
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
135 struct direct_im {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
136 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
137 char name[80];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 int watcher;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
139 aim_conn_t *conn;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
140 gboolean connected;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
141 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
142
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
143 struct ask_direct {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
144 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145 char *sn;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
146 char ip[64];
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
147 fu8_t cookie[8];
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
148 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
149
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
150 /*
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
151 * Various PRPL-specific buddy info that we want to keep track of
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
152 * Some other info is maintained by locate.c, and I'd like to move
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
153 * the rest of this to libfaim, mostly im.c
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
154 */
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
155 struct buddyinfo {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
156 gboolean typingnot;
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
157 gchar *availmsg;
6857
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
158 fu32_t ipaddr;
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
159
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
160 unsigned long ico_me_len;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
161 unsigned long ico_me_csum;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
162 time_t ico_me_time;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
163 gboolean ico_informed;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
164
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
165 unsigned long ico_len;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
166 unsigned long ico_csum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
167 time_t ico_time;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
168 gboolean ico_need;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
169 gboolean ico_sent;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
170 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
171
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
172 struct name_data {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
173 GaimConnection *gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
174 gchar *name;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
175 gchar *nick;
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
176 };
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
177
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
178 static char *msgerrreason[] = {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
179 N_("Invalid error"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
180 N_("Invalid SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
181 N_("Rate to host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
182 N_("Rate to client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
183 N_("Not logged in"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
184 N_("Service unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
185 N_("Service not defined"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
186 N_("Obsolete SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
187 N_("Not supported by host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
188 N_("Not supported by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
189 N_("Refused by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
190 N_("Reply too big"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
191 N_("Responses lost"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
192 N_("Request denied"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
193 N_("Busted SNAC payload"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
194 N_("Insufficient rights"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
195 N_("In local permit/deny"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
196 N_("Too evil (sender)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
197 N_("Too evil (receiver)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
198 N_("User temporarily unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
199 N_("No match"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
200 N_("List overflow"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
201 N_("Request ambiguous"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
202 N_("Queue full"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
203 N_("Not while on AOL")
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
204 };
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
205 static int msgerrreasonlen = 25;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
206
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
207 /* All the libfaim->gaim callback functions */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
208 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
209 static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
210 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
211 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
212 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
213 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
214 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
215 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
216 static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
217 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
218 static int gaim_parse_userinfo (aim_session_t *, aim_frame_t *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
219 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
220 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
221 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
222 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
223 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
224 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
225 static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
226 static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
227 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
228 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
229 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
230 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
231 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
232 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
233 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
234 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
235 static int gaim_connerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
236 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
237 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
238 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
239 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
240 static int conninitdone_email (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
241 static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
242 static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
243 static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
244 static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
245 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
246 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
247 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
248 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
249 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
250 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
251 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
252 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
253 static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
254 static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
255 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
256 #ifndef NOSSI
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
257 static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
258 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
259 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
260 static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
261 static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
262 static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
263 static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
264 static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
265 #endif
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
266
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
267 /* for DirectIM/image transfer */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
268 static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
269 static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
270 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
271 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
272
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
273 /* for file transfer */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
274 static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
275 static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
276 static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
277 static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
278
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
279 /* for icons */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
280 static gboolean gaim_icon_timerfunc(gpointer data);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
281
5306
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
282 /* prpl actions - remove this at some point */
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
283 /* Because I don't like forward declarations? I think that was why... */
5954
fccc33d4b8fa [gaim-migrate @ 6398]
Mark Doliner <mark@kingant.net>
parents: 5948
diff changeset
284 static void oscar_set_info(GaimConnection *gc, const char *text);
5306
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
285
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
286 static void oscar_free_name_data(struct name_data *data) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
287 g_free(data->name);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
288 g_free(data->nick);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
289 g_free(data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
290 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
291
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
292 static void oscar_free_buddyinfo(void *data) {
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
293 struct buddyinfo *bi = data;
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
294 g_free(bi->availmsg);
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
295 g_free(bi);
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
296 }
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
297
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
298 static fu32_t oscar_encoding_check(const char *utf8)
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
299 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
300 int i = 0;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
301 fu32_t encodingflag = 0;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
302
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
303 /* Determine how we can send this message. Per the warnings elsewhere
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
304 * in this file, these little checks determine the simplest encoding
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
305 * we can use for a given message send using it. */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
306 while (utf8[i]) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
307 if ((unsigned char)utf8[i] > 0x7f) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
308 /* not ASCII! */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
309 encodingflag = AIM_IMFLAGS_ISO_8859_1;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
310 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
311 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
312 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
313 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
314 while (utf8[i]) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
315 /* ISO-8859-1 is 0x00-0xbf in the first byte
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
316 * followed by 0xc0-0xc3 in the second */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
317 if ((unsigned char)utf8[i] < 0x80) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
318 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
319 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
320 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
321 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
322 i += 2;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
323 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
324 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
325 encodingflag = AIM_IMFLAGS_UNICODE;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
326 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
327 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
328
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
329 return encodingflag;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
330 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
331
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
332 static fu32_t oscar_encoding_parse(const char *enc)
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
333 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
334 char *charset;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
335
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
336 /* If anything goes wrong, fall back on ASCII and print a message */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
337 if (enc == NULL) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
338 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
339 "Encoding was null, that's odd\n");
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
340 return 0;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
341 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
342 charset = strstr(enc, "charset=");
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
343 if (charset == NULL) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
344 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
345 "No charset specified for info, assuming ASCII\n");
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
346 return 0;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
347 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
348 charset += 8;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
349 if (!strcmp(charset, "\"us-ascii\"") || !strcmp(charset, "\"utf-8\"")) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
350 /* UTF-8 is our native charset, ASCII is a proper subset */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
351 return 0;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
352 } else if (!strcmp(charset, "\"iso-8859-1\"")) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
353 return AIM_IMFLAGS_ISO_8859_1;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
354 } else if (!strcmp(charset, "\"unicode-2-0\"")) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
355 return AIM_IMFLAGS_UNICODE;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
356 } else {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
357 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
358 "Unrecognized character set '%s', using ASCII\n", charset);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
359 return 0;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
360 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
361 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
362
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
363 gchar *oscar_encoding_to_utf8(const char *encoding, char *text, int textlen)
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
364 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
365 gchar *utf8 = NULL;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
366 int flags = oscar_encoding_parse(encoding);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
367
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
368 switch (flags) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
369 case 0:
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
370 utf8 = g_strndup(text, textlen);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
371 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
372 case AIM_IMFLAGS_ISO_8859_1:
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
373 utf8 = g_convert(text, textlen, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
374 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
375 case AIM_IMFLAGS_UNICODE:
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
376 utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
377 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
378 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
379
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
380 return utf8;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
381 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
382
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
383 static struct direct_im *find_direct_im(OscarData *od, const char *who) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
384 GSList *d = od->direct_ims;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
385 struct direct_im *m = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
386
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
387 while (d) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
388 m = (struct direct_im *)d->data;
4355
33e5c088346b [gaim-migrate @ 4620]
Mark Doliner <mark@kingant.net>
parents: 4353
diff changeset
389 if (!aim_sncmp(who, m->name))
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
390 return m;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
391 d = d->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
392 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
393
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
394 return NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
395 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
396
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
397 static char *extract_name(const char *name) {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
398 char *tmp, *x;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
399 int i, j;
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
400
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
401 if (!name)
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
402 return NULL;
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
403
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
404 x = strchr(name, '-');
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
405
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
406 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
407 x = strchr(++x, '-');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
408 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
409 tmp = g_strdup(++x);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
410
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
411 for (i = 0, j = 0; x[i]; i++) {
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
412 char hex[3];
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
413 if (x[i] != '%') {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
414 tmp[j++] = x[i];
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
415 continue;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
416 }
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
417 strncpy(hex, x + ++i, 2); hex[2] = 0;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
418 i++;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
419 tmp[j++] = strtol(hex, NULL, 16);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
420 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
421
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
422 tmp[j] = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
423 return tmp;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
424 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
426 static struct chat_connection *find_oscar_chat(GaimConnection *gc, int id) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
427 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
428 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
429
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
430 while (g) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
431 c = (struct chat_connection *)g->data;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
432 if (c->id == id)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
433 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
434 g = g->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
435 c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
436 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
437
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
438 return c;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
439 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
440
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
441 static struct chat_connection *find_oscar_chat_by_conn(GaimConnection *gc,
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
442 aim_conn_t *conn) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
443 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
444 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
445
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
446 while (g) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
447 c = (struct chat_connection *)g->data;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
448 if (c->conn == conn)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
449 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
450 g = g->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
451 c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
452 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
453
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
454 return c;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
455 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
456
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
457 static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
458 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
459 OscarData *od = (OscarData *)gc->proto_data;
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
460 GaimConversation *cnv;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
461 struct direct_im *dim;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
462 char *sn;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
463 char buf[256];
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
464
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
465 sn = g_strdup(aim_odc_getsn(conn));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
466
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
467 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
468 "%s disconnected Direct IM.\n", sn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
469
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
470 dim = find_direct_im(od, sn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
471 od->direct_ims = g_slist_remove(od->direct_ims, dim);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
472 gaim_input_remove(dim->watcher);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
473
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
474 if (dim->connected)
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
475 g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), sn);
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
476 else
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
477 g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), sn);
6640
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6623
diff changeset
478
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6623
diff changeset
479 cnv = gaim_find_conversation_with_account(sn, gaim_connection_get_account(gc));
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6623
diff changeset
480 if (cnv)
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
481 gaim_conversation_write(cnv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
482
5579
e0146fcc4718 [gaim-migrate @ 5983]
Sean Egan <seanegan@gmail.com>
parents: 5577
diff changeset
483 gaim_conversation_update_progress(cnv, 0);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
484
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
485 g_free(dim); /* I guess? I don't see it anywhere else... -- mid */
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
486 g_free(sn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
487
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
488 return;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
489 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
490
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
491 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
492 aim_conn_t *conn = (aim_conn_t *)data;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
493 aim_session_t *sess = aim_conn_getsess(conn);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
494 GaimConnection *gc = sess ? sess->aux_data : NULL;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
495 OscarData *od;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
496
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
497 if (!gc) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
498 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
499 "oscar callback for closed connection (1).\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
500 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
501 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
502
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
503 od = (OscarData *)gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
504
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
505 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
506 /* oh boy. this is probably bad. i guess the only thing we
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
507 * can really do is return? */
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
508 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
509 "oscar callback for closed connection (2).\n");
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
510 gaim_debug(GAIM_DEBUG_MISC, "oscar", "gc = %p\n", gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
511 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
512 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
513
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
514 if (condition & GAIM_INPUT_READ) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
515 if (conn->type == AIM_CONN_TYPE_LISTENER) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
516 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
517 "got information on rendezvous listener\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
518 if (aim_handlerendconnect(od->sess, conn) < 0) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
519 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
520 "connection error (rendezvous listener)\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
521 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
522 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
523 } else {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
524 if (aim_get_command(od->sess, conn) >= 0) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
525 aim_rxdispatch(od->sess);
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
526 if (od->killme) {
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
527 gaim_debug(GAIM_DEBUG_ERROR, "oscar", "Waiting to be destroyed\n");
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
528 return;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
529 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
530 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
531 if ((conn->type == AIM_CONN_TYPE_BOS) ||
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
532 !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
533 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
534 "major connection error\n");
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
535 gaim_connection_error(gc, _("Disconnected."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
536 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
537 struct chat_connection *c = find_oscar_chat_by_conn(gc, conn);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
538 char *buf;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
539 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
540 "disconnected from chat room %s\n", c->name);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
541 c->conn = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
542 if (c->inpa > 0)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
543 gaim_input_remove(c->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
544 c->inpa = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
545 c->fd = -1;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
546 aim_conn_kill(od->sess, &conn);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
547 buf = g_strdup_printf(_("You have been disconnected from chat room %s."), c->name);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
548 gaim_notify_error(gc, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
549 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
550 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
551 if (od->cnpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
552 gaim_input_remove(od->cnpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
553 od->cnpa = 0;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
554 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
555 "removing chatnav input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
556 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
557 struct create_room *cr = od->create_rooms->data;
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
558 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
559 od->create_rooms =
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
560 g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
561 g_free(cr);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
562 gaim_notify_error(gc, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
563 _("Chat is currently unavailable"),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
564 NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
565 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
566 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
567 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
568 if (od->paspa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
569 gaim_input_remove(od->paspa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
570 od->paspa = 0;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
571 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
572 "removing authconn input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
573 aim_conn_kill(od->sess, &conn);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
574 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
575 if (od->emlpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
576 gaim_input_remove(od->emlpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
577 od->emlpa = 0;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
578 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
579 "removing email input watcher\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
580 aim_conn_kill(od->sess, &conn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
581 } else if (conn->type == AIM_CONN_TYPE_ICON) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
582 if (od->icopa > 0)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
583 gaim_input_remove(od->icopa);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
584 od->icopa = 0;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
585 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
586 "removing icon input watcher\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
587 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
588 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
589 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
590 gaim_odc_disconnect(od->sess, conn);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
591 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
592 } else {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
593 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
594 "holy crap! generic connection error! %hu\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
595 conn->type);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
596 aim_conn_kill(od->sess, &conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
597 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
598 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
599 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
600 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
601 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
602
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
603 static void oscar_debug(aim_session_t *sess, int level, const char *format, va_list va) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
604 GaimConnection *gc = sess->aux_data;
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
605 gchar *s = g_strdup_vprintf(format, va);
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
606 gchar *buf;
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
607
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
608 buf = g_strdup_printf("%s %d: %s", gaim_account_get_username(gaim_connection_get_account(gc)), level, s);
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
609 gaim_debug(GAIM_DEBUG_INFO, "oscar", buf);
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
610 if (buf[strlen(buf)-1] != '\n')
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
611 gaim_debug(GAIM_DEBUG_INFO, NULL, "\n");
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
612 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
613 g_free(s);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
614 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
615
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
616 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
617 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
618 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
619 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
620 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
621 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
622
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
623 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
624 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
625 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
626 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
627
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
628 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
629 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
630 conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
631 conn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
632
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
633 if (source < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
634 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
635 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
636 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
637
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
638 aim_conn_completeconnect(sess, conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
639 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
640 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
641
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
642 gaim_debug(GAIM_DEBUG_INFO, "oscar",
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
643 "Screen name sent, waiting for response\n");
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
644 gaim_connection_update_progress(gc, _("Screen name sent"), 1, OSCAR_CONNECT_STEPS);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
645 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
646
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
647 static void oscar_login(GaimAccount *account) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
648 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
649 aim_conn_t *conn;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
650 GaimConnection *gc = gaim_account_get_connection(account);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
651 OscarData *od = gc->proto_data = g_new0(OscarData, 1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
652
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
653 gaim_debug(GAIM_DEBUG_MISC, "oscar", "oscar_login: gc = %p\n", gc);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
654
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
655 if (isdigit(*(gaim_account_get_username(account)))) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
656 od->icq = TRUE;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
657 } else {
6622
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
658 gc->flags |= GAIM_CONNECTION_HTML;
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
659 gc->flags |= GAIM_CONNECTION_AUTO_RESP;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
660 }
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
661 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
662
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
663 sess = g_new0(aim_session_t, 1);
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
664 aim_session_init(sess, TRUE, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
665 aim_setdebuggingcb(sess, oscar_debug);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
666 /*
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
667 * We need an immediate queue because we don't use a while-loop
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
668 * to see if things need to be sent.
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
669 */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
670 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
671 od->sess = sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
672 sess->aux_data = gc;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
673
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
674 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
675 if (conn == NULL) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
676 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
677 "internal connection error\n");
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
678 gaim_connection_error(gc, _("Unable to login to AIM"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
679 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
680 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
681
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
682 aim_conn_addhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
683 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
684 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
685
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
686 conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
687 if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", FAIM_LOGIN_SERVER),
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
688 gaim_account_get_int(account, "port", FAIM_LOGIN_PORT),
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
689 oscar_login_connect, gc) < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
690 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
691 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
692 }
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
693
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
694 gaim_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
695 }
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
696
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
697 static void oscar_close(GaimConnection *gc) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
698 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
699
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
700 while (od->oscar_chats) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
701 struct chat_connection *n = od->oscar_chats->data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
702 if (n->inpa > 0)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
703 gaim_input_remove(n->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
704 g_free(n->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
705 g_free(n->show);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
706 od->oscar_chats = g_slist_remove(od->oscar_chats, n);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
707 g_free(n);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
708 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
709 while (od->direct_ims) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
710 struct direct_im *n = od->direct_ims->data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
711 if (n->watcher > 0)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
712 gaim_input_remove(n->watcher);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
713 od->direct_ims = g_slist_remove(od->direct_ims, n);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
714 g_free(n);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
715 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
716 /* BBB */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
717 while (od->file_transfers) {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
718 GaimXfer *xfer;
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
719 xfer = (GaimXfer *)od->file_transfers->data;
7805
5f0bb52c0609 [gaim-migrate @ 8452]
Mark Doliner <mark@kingant.net>
parents: 7793
diff changeset
720 gaim_xfer_cancel_local(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
721 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
722 while (od->requesticon) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
723 char *sn = od->requesticon->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
724 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
725 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
726 }
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
727 g_hash_table_destroy(od->buddyinfo);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
728 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
729 struct create_room *cr = od->create_rooms->data;
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
730 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
731 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
732 g_free(cr);
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
733 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
734 if (od->email)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
735 g_free(od->email);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
736 if (od->newp)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
737 g_free(od->newp);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
738 if (od->oldp)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
739 g_free(od->oldp);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
740 if (gc->inpa > 0)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
741 gaim_input_remove(gc->inpa);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
742 if (od->cnpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
743 gaim_input_remove(od->cnpa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
744 if (od->paspa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
745 gaim_input_remove(od->paspa);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
746 if (od->emlpa > 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
747 gaim_input_remove(od->emlpa);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
748 if (od->icopa > 0)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
749 gaim_input_remove(od->icopa);
6907
2c2ff3a50435 [gaim-migrate @ 7454]
Mark Doliner <mark@kingant.net>
parents: 6905
diff changeset
750 if (od->icontimer > 0)
4832
edfe778868e2 [gaim-migrate @ 5157]
Mark Doliner <mark@kingant.net>
parents: 4830
diff changeset
751 g_source_remove(od->icontimer);
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
752 if (od->getblisttimer)
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
753 g_source_remove(od->getblisttimer);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
754 aim_session_kill(od->sess);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
755 g_free(od->sess);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
756 od->sess = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
757 g_free(gc->proto_data);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
758 gc->proto_data = NULL;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
759 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Signed off.\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
760 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
761
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
762 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
763 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
764 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
765 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
766 aim_conn_t *bosconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
767
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
768 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
769 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
770 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
771 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
772
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
773 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
774 sess = od->sess;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
775 bosconn = od->conn;
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
776 bosconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
777
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
778 if (source < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
779 gaim_connection_error(gc, _("Could Not Connect"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
780 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
781 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
782
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
783 aim_conn_completeconnect(sess, bosconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
784 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
785
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
786 gaim_connection_update_progress(gc,
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
787 _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
788 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
789
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
790 /* BBB */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
791 /*
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
792 * 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
793 * 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
794 * ninja.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
795 *
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
796 * The series of events for a file send is:
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
797 * -Create xfer and call gaim_xfer_request (this happens in oscar_ask_sendfile)
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
798 * -User chooses a file and oscar_xfer_init is called. It establishs a
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
799 * 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
800 * gives them the file name, port, IP, etc.)
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
801 * -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
802 * in oscar_sendfile_estblsh)
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
803 * -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
804 * -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
805 * connection.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
806 * -We get drunk because file transfer kicks ass.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
807 *
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
808 * The series of events for a file receive is:
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
809 * -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
810 * -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
811 * oscar_xfer_init is called
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
812 * -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
813 * -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
814 * them an AIM_CB_OFT_ACK.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
815 * -They begin to send us lots of raw data.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
816 * -When they finish sending data we send an AIM_CB_OFT_DONE and then close
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
817 * the connectionn.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
818 */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
819 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
820
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
821 /* XXX - This function is pretty ugly */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
822 static void oscar_xfer_init(GaimXfer *xfer)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
823 {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
824 struct aim_oft_info *oft_info = xfer->data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
825 GaimConnection *gc = oft_info->sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
826 OscarData *od = gc->proto_data;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
827
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
828 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
829 int i;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
830
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
831 xfer->filename = g_path_get_basename(xfer->local_filename);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
832 strncpy(oft_info->fh.name, xfer->filename, 64);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
833 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
834 oft_info->fh.size = gaim_xfer_get_size(xfer);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
835 oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
836
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
837 /*
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
838 * First try the port specified earlier (5190). If that fails,
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
839 * increment by 1 and try again.
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
840 */
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
841 aim_sendfile_listen(od->sess, oft_info);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
842 for (i=0; (i<5 && !oft_info->conn); i++) {
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
843 xfer->local_port = oft_info->port = oft_info->port + 1;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
844 aim_sendfile_listen(od->sess, oft_info);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
845 }
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
846 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
847 "port is %d, ip is %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
848 xfer->local_port, oft_info->clientip);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
849 if (oft_info->conn) {
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
850 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
851 aim_im_sendch2_sendfile_ask(od->sess, oft_info);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
852 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
853 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
854 gaim_notify_error(gc, NULL, _("File Transfer Aborted"),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
855 _("Unable to establish listener socket."));
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
856 /* XXX - The below line causes a crash because the transfer is canceled before the "Ok" callback on the file selection thing exists, I think */
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
857 /* gaim_xfer_cancel_remote(xfer); */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
858 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
859 } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
860 oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS, NULL);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
861 if (oft_info->conn) {
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
862 oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
863 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, oscar_sendfile_prompt, 0);
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
864 oft_info->conn->fd = xfer->fd = gaim_proxy_connect(gaim_connection_get_account(gc), xfer->remote_ip, xfer->remote_port,
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
865 oscar_sendfile_connected, xfer);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
866 if (xfer->fd == -1) {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
867 gaim_notify_error(gc, NULL, _("File Transfer Aborted"),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
868 _("Unable to establish file descriptor."));
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
869 /* gaim_xfer_cancel_remote(xfer); */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
870 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
871 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
872 gaim_notify_error(gc, NULL, _("File Transfer Aborted"),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
873 _("Unable to create new connection."));
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
874 /* gaim_xfer_cancel_remote(xfer); */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
875 /* Try a different port? Ask them to connect to us? */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
876 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
877
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
878 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
879 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
880
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
881 static void oscar_xfer_start(GaimXfer *xfer)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
882 {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
883
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
884 gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_xfer_start\n");
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
885 /* I'm pretty sure we don't need to do jack here. Nor Jill. */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
886 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
887
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
888 static void oscar_xfer_end(GaimXfer *xfer)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
889 {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
890 struct aim_oft_info *oft_info = xfer->data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
891 GaimConnection *gc = oft_info->sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
892 OscarData *od = gc->proto_data;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
893
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
894 gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_xfer_end\n");
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
895
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
896 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
897 oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
898 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_DONE, oft_info);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
899 }
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
900
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
901 aim_conn_kill(oft_info->sess, &oft_info->conn);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
902 aim_oft_destroyinfo(oft_info);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
903 xfer->data = NULL;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
904 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
905 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
906
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
907 static void oscar_xfer_cancel_send(GaimXfer *xfer)
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
908 {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
909 struct aim_oft_info *oft_info = xfer->data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
910 GaimConnection *gc = oft_info->sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
911 OscarData *od = gc->proto_data;
4763
c050edba7b83 [gaim-migrate @ 5081]
Mark Doliner <mark@kingant.net>
parents: 4762
diff changeset
912
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
913 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
914 "AAA - in oscar_xfer_cancel_send\n");
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
915
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
916 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
917
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
918 aim_conn_kill(oft_info->sess, &oft_info->conn);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
919 aim_oft_destroyinfo(oft_info);
4763
c050edba7b83 [gaim-migrate @ 5081]
Mark Doliner <mark@kingant.net>
parents: 4762
diff changeset
920 xfer->data = NULL;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
921 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
922 }
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
923
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
924 static void oscar_xfer_cancel_recv(GaimXfer *xfer)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
925 {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
926 struct aim_oft_info *oft_info = xfer->data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
927 GaimConnection *gc = oft_info->sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
928 OscarData *od = gc->proto_data;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
929
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
930 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
931 "AAA - in oscar_xfer_cancel_recv\n");
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
932
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
933 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
934
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
935 aim_conn_kill(oft_info->sess, &oft_info->conn);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
936 aim_oft_destroyinfo(oft_info);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
937 xfer->data = NULL;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
938 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
939 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
940
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
941 static void oscar_xfer_ack(GaimXfer *xfer, const char *buffer, size_t size)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
942 {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
943 struct aim_oft_info *oft_info = xfer->data;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
944
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
945 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
946 /*
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
947 * If we're done sending, intercept the socket from the core ft code
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
948 * and wait for the other guy to send the "done" OFT packet.
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
949 */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
950 if (gaim_xfer_get_bytes_remaining(xfer) <= 0) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
951 gaim_input_remove(xfer->watcher);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
952 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
953 xfer->fd = 0;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
954 gaim_xfer_set_completed(xfer, TRUE);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
955 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
956 } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
957 /* Update our rolling checksum. Like Walmart, yo. */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
958 oft_info->fh.recvcsum = aim_oft_checksum_chunk(buffer, size, oft_info->fh.recvcsum);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
959 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
960 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
961
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
962 static GaimXfer *oscar_find_xfer_by_cookie(GSList *fts, const char *ck)
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
963 {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
964 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
965 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
966
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
967 while (fts) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
968 xfer = fts->data;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
969 oft_info = xfer->data;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
970
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
971 if (oft_info && !strcmp(ck, oft_info->cookie))
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
972 return xfer;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
973
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
974 fts = g_slist_next(fts);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
975 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
976
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
977 return NULL;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
978 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
979
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
980 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
981 {
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
982 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
983 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
984
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
985 while (fts) {
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
986 xfer = fts->data;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
987 oft_info = xfer->data;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
988
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
989 if (oft_info && (conn == oft_info->conn))
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
990 return xfer;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
991
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
992 fts = g_slist_next(fts);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
993 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
994
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
995 return NULL;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
996 }
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
997
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
998 static void oscar_ask_sendfile(GaimConnection *gc, const char *destsn) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
999 OscarData *od = (OscarData *)gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1000 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1001 struct aim_oft_info *oft_info;
3752
b32474e522fa [gaim-migrate @ 3890]
Luke Schierer <lschiere@pidgin.im>
parents: 3730
diff changeset
1002
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1003 /* 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
1004
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1005 /* Build the file transfer handle */
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1006 xfer = gaim_xfer_new(gaim_connection_get_account(gc), GAIM_XFER_SEND, destsn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1007 xfer->local_port = 5190;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1008
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1009 /* Create the oscar-specific data */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1010 oft_info = aim_oft_createinfo(od->sess, NULL, destsn, xfer->local_ip, xfer->local_port, 0, 0, NULL);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1011 xfer->data = oft_info;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1012
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1013 /* Setup our I/O op functions */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1014 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1015 gaim_xfer_set_start_fnc(xfer, oscar_xfer_start);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1016 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
1017 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
1018 gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv);
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1019 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1020
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1021 /* Keep track of this transfer for later */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1022 od->file_transfers = g_slist_append(od->file_transfers, xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1023
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1024 /* Now perform the request */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1025 gaim_xfer_request(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1026 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1027
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1028 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
1029 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1030 OscarData *od = gc->proto_data;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1031 GaimAccount *account = gc->account;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1032 aim_conn_t *bosconn;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1033 char *host; int port;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1034 int i, rc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1035 va_list ap;
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1036 struct aim_authresp_info *info;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1037
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1038 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1039
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1040 va_start(ap, fr);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1041 info = va_arg(ap, struct aim_authresp_info *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1042 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1043
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1044 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1045 "inside auth_resp (Screen name: %s)\n", info->sn);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1046
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
1047 if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
1048 char buf[256];
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1049 switch (info->errorcode) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1050 case 0x05:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1051 /* Incorrect nick/password */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1052 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1053 gaim_connection_error(gc, _("Incorrect nickname or password."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1054 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1055 case 0x11:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1056 /* Suspended account */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1057 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1058 gaim_connection_error(gc, _("Your account is currently suspended."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1059 break;
3498
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
1060 case 0x14:
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
1061 /* service temporarily unavailable */
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1062 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
1063 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1064 case 0x18:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1065 /* connecting too frequently */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1066 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1067 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
1068 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1069 case 0x1c:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1070 /* client too old */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1071 gc->wants_to_die = TRUE;
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1072 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
1073 gaim_connection_error(gc, buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1074 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1075 default:
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
1076 gaim_connection_error(gc, _("Authentication failed"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1077 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1078 }
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1079 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1080 "Login Error Code 0x%04hx\n", info->errorcode);
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1081 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1082 "Error URL: %s\n", info->errorurl);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1083 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1084 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1085 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1087
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1088 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1089 "Reg status: %hu\n", info->regstatus);
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1090
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1091 if (info->email) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1092 gaim_debug(GAIM_DEBUG_MISC, "oscar", "Email: %s\n", info->email);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1093 } else {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1094 gaim_debug(GAIM_DEBUG_MISC, "oscar", "Email is NULL\n");
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1095 }
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1096
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1097 gaim_debug(GAIM_DEBUG_MISC, "oscar", "BOSIP: %s\n", info->bosip);
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1098 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1099 "Closing auth connection...\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1100 aim_conn_kill(sess, &fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1101
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1102 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1103 if (bosconn == NULL) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1104 gaim_connection_error(gc, _("Internal Error"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1105 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1106 return 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1107 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1108
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
1109 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
1110 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
1111 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1112 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
1113 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
1114 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
1115 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
1116 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
1117 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
1118 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
1119 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
1120 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
1121 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
1122 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
1123 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
1124 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
1125 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
1126 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
1127 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
1128 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_userinfo, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1129 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
1130 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
1131 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
1132 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1133 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1134 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1135 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
1136 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
1137 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
1138 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
1139 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
1140 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
1141 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
1142 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_INFO, gaim_icqinfo, 0);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
1143 #ifndef NOSSI
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
1144 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
1145 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
1146 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
1147 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
1148 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_SRVACK, gaim_ssi_parseack, 0);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
1149 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
1150 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
1151 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
1152 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADDED, gaim_ssi_gotadded, 0);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
1153 #endif
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
1154
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1155 od->conn = bosconn;
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1156 for (i = 0; i < (int)strlen(info->bosip); i++) {
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1157 if (info->bosip[i] == ':') {
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1158 port = atoi(&(info->bosip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1159 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1160 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1161 }
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1162 host = g_strndup(info->bosip, i);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1163 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1164 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
1165 g_free(host);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1166 if (rc < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1167 gaim_connection_error(gc, _("Could Not Connect"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1168 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1169 return 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1170 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
1171 aim_sendcookie(sess, bosconn, info->cookielen, info->cookie);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1172 gaim_input_remove(gc->inpa);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1173
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1174 gaim_connection_update_progress(gc, _("Received authorization"), 3, OSCAR_CONNECT_STEPS);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1175
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1176 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1177 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1178
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1179 /* XXX - Should use gaim_url_fetch for the below stuff */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1180 struct pieceofcrap {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1181 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1182 unsigned long offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1183 unsigned long len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1184 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1185 int fd;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1186 aim_conn_t *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1187 unsigned int inpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1188 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1189
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1190 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1191 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1192 struct pieceofcrap *pos = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1193 OscarData *od = pos->gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1194 char in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1195 int x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1196 unsigned char m[17];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1197
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1198 while (read(pos->fd, &in, 1) == 1) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1199 if (in == '\n')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1200 x++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1201 else if (in != '\r')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1202 x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1203 if (x == 2)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1204 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1205 in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1206 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1207 if (in != '\n') {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
1208 char buf[256];
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
1209 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
1210 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1211 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
1212 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1213 buf);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1214 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1215 close(pos->fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1216 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1217 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1218 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1219 read(pos->fd, m, 16);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1220 m[16] = '\0';
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1221 gaim_debug(GAIM_DEBUG_MISC, "oscar", "Sending hash: ");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1222 for (x = 0; x < 16; x++)
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1223 gaim_debug(GAIM_DEBUG_MISC, NULL, "%02hhx ", (unsigned char)m[x]);
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1224
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1225 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1226 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1227 close(pos->fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1228 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
1229 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1230 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1231
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1232 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1233 struct pieceofcrap *pos = data;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1234 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1235
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1236 pos->fd = source;
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1237
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1238 if (source < 0) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1239 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
1240 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1241 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
1242 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1243 buf);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1244 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1245 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1246 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1247 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1248 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1249 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1250
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1251 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
1252 pos->offset, pos->len, pos->modname ? pos->modname : "");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1253 write(pos->fd, buf, strlen(buf));
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1254 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1255 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1256 g_free(pos->modname);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1257 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
1258 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1259 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1260
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1261 /* size of icbmui.ocm, the largest module in AIM 3.5 */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1262 #define AIM_MAX_FILE_SIZE 98304
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1263
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1264 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1265 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1266 struct pieceofcrap *pos;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1267 fu32_t offset, len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1268 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1269
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1270 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
1271 offset = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
1272 len = va_arg(ap, fu32_t);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1273 modname = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1274 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1275
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1276 gaim_debug(GAIM_DEBUG_MISC, "oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
1277 "offset: %u, len: %u, file: %s\n",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1278 offset, len, (modname ? modname : "aim.exe"));
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1279
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1280 if (len == 0) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1281 gaim_debug(GAIM_DEBUG_MISC, "oscar", "len is 0, hashing NULL\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1282 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1283 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1284 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1285 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1286 /* uncomment this when you're convinced it's right. remember, it's been wrong before.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1287 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1288 char *buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1289 int i = 8;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1290 if (modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1291 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1292 buf = g_malloc(i);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1293 i = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1294 if (modname) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1295 memcpy(buf, modname, strlen(modname));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1296 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1297 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1298 buf[i++] = offset & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1299 buf[i++] = (offset >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1300 buf[i++] = (offset >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1301 buf[i++] = (offset >> 24) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1302 buf[i++] = len & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1303 buf[i++] = (len >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1304 buf[i++] = (len >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1305 buf[i++] = (len >> 24) & 0xff;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1306 gaim_debug(GAIM_DEBUG_MISC, "oscar", "len + offset is invalid, "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1307 "hashing request\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1308 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1309 g_free(buf);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1310 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1311 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1312 */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1313
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1314 pos = g_new0(struct pieceofcrap, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1315 pos->gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1316 pos->conn = fr->conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1317
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1318 pos->offset = offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1319 pos->len = len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1320 pos->modname = modname ? g_strdup(modname) : NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1321
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1322 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
1323 char buf[256];
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1324 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1325 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1326 g_free(pos);
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
1327 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
1328 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1329 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
1330 _("Gaim was unable to get a valid login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1331 buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1332 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1333
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1334 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1335 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1336
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1337 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
1338 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1339 OscarData *od = gc->proto_data;
5591
74a0e79ad627 [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1340 GaimAccount *account = gaim_connection_get_account(gc);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1341 GaimAccount *ac = gaim_connection_get_account(gc);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1342 #if 0
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1343 struct client_info_s info = {"gaim", 7, 3, 2003, "us", "en", 0x0004, 0x0000, 0x04b};
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1344 #endif
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1345 va_list ap;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1346 char *key;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1347
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1348 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1349 key = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1350 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1351
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1352 if (od->icq) {
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
1353 struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD;
5591
74a0e79ad627 [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1354 aim_send_login(sess, fr->conn, gaim_account_get_username(ac),
74a0e79ad627 [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1355 gaim_account_get_password(account), &info, key);
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
1356 } else {
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
1357 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
5591
74a0e79ad627 [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1358 aim_send_login(sess, fr->conn, gaim_account_get_username(ac),
74a0e79ad627 [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1359 gaim_account_get_password(account), &info, key);
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
1360 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1361
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1362 gaim_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS);
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1363
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1364 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1365 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1366
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1367 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
1368 GaimConnection *gc = sess->aux_data;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1369 struct chat_connection *chatcon;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1370 static int id = 1;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1371
6905
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
1372 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
1373 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
1374 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
1375 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
1376 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
1377
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
1378 aim_clientready(sess, fr->conn);
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1379
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1380 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1381 chatcon->id = id;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1382 chatcon->cnv = serv_got_joined_chat(gc, id++, chatcon->show);
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1383
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1384 return 1;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1385 }
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1386
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1387 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
1388
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1389 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
1390 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
1391
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1392 aim_clientready(sess, fr->conn);
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1393
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1394 aim_chatnav_reqrights(sess, fr->conn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1395
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1396 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1397 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1398
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1399 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
1400
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1401 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
1402 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
1403
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1404 aim_email_sendcookies(sess);
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1405 aim_email_activate(sess);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1406 aim_clientready(sess, fr->conn);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1407
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1408 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1409 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1410
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1411 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
1412 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1413 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1414
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1415 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
1416 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
1417 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
1418
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1419 aim_clientready(sess, fr->conn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1420
4823
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
1421 od->iconconnecting = FALSE;
4a376a305fa5 [gaim-migrate @ 5148]
Mark Doliner <mark@kingant.net>
parents: 4822
diff changeset
1422
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1423 if (od->icontimer)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1424 g_source_remove(od->icontimer);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1425 od->icontimer = g_timeout_add(100, gaim_icon_timerfunc, gc);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1426
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1427 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1428 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1429
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1430 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
1431 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1432 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1433 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1434 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1435
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1436 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1437 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1438 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1439 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1440
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1441 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1442 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1443 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1444 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1445
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1446 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1447 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1448 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1449 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1450 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1451 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1452
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1453 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1454 od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1455 gaim_debug(GAIM_DEBUG_INFO, "oscar", "chatnav: connected\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1456 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1457
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1458 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1459 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1460 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1461 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1462 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1463 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1464
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1465 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1466 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1467 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1468 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1469
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1470 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1471 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1472 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1473 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1474
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1475 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1476 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1477 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1478 "unable to connect to authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1479 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1480 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1481
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1482 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1483 od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
6905
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
1484 gaim_debug(GAIM_DEBUG_INFO, "oscar", "admin: connected\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1485 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1486
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1487 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1488 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1489 struct chat_connection *ccon = data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1490 GaimConnection *gc = ccon->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1491 OscarData *od;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1492 aim_session_t *sess;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1493 aim_conn_t *tstconn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1494
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1495 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1496 close(source);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1497 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1498 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1499 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1500 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1501 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1502
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1503 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1504 sess = od->sess;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1505 tstconn = ccon->conn;
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1506 tstconn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1507
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1508 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1509 aim_conn_kill(sess, &tstconn);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1510 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1511 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1512 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1513 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1514 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1515
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1516 aim_conn_completeconnect(sess, ccon->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1517 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
1518 od->oscar_chats = g_slist_append(od->oscar_chats, ccon);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1519 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1520
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1521 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
1522 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1523 OscarData *od;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1524 aim_session_t *sess;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1525 aim_conn_t *tstconn;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1526
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1527 if (!g_list_find(gaim_connections_get_all(), gc)) {
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1528 close(source);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1529 return;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1530 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1531
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1532 od = gc->proto_data;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1533 sess = od->sess;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1534 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1535 tstconn->fd = source;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1536
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1537 if (source < 0) {
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1538 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1539 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1540 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1541 return;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1542 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1543
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1544 aim_conn_completeconnect(sess, tstconn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1545 od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1546 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1547 "email: connected\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1548 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1549
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1550 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
1551 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1552 OscarData *od;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1553 aim_session_t *sess;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1554 aim_conn_t *tstconn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1555
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1556 if (!g_list_find(gaim_connections_get_all(), gc)) {
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1557 close(source);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1558 return;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1559 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1560
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1561 od = gc->proto_data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1562 sess = od->sess;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1563 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1564 tstconn->fd = source;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1565
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1566 if (source < 0) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1567 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1568 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1569 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1570 return;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1571 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1572
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1573 aim_conn_completeconnect(sess, tstconn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1574 od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1575 gaim_debug(GAIM_DEBUG_INFO, "oscar", "icon: connected\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1576 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1577
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1578 /* 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
1579 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
1580 GaimConnection *gc = sess->aux_data;
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1581 GaimAccount *account = gaim_connection_get_account(gc);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1582 aim_conn_t *tstconn;
4452
2afc0f845e74 [gaim-migrate @ 4727]
Sean Egan <seanegan@gmail.com>
parents: 4443
diff changeset
1583 int i;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1584 char *host;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1585 int port;
4821
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
1586 va_list ap;
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
1587 struct aim_redirect_data *redir;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1588
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1589 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1590
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1591 va_start(ap, fr);
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1592 redir = va_arg(ap, struct aim_redirect_data *);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1593 va_end(ap);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1594
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1595 for (i = 0; i < (int)strlen(redir->ip); i++) {
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1596 if (redir->ip[i] == ':') {
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1597 port = atoi(&(redir->ip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1598 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1599 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1600 }
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1601 host = g_strndup(redir->ip, i);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1602
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1603 switch(redir->group) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1604 case 0x7: /* Authorizer */
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1605 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1606 "Reconnecting with authorizor...\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1607 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1608 if (tstconn == NULL) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1609 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1610 "unable to reconnect with authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1611 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1612 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1613 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
1614 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
1615 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
1616
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1617 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1618 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
1619 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1620 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1621 "unable to reconnect with authorizer\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1622 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1623 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1624 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
1625 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1626 break;
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1627
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1628 case 0xd: /* ChatNav */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1629 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1630 if (tstconn == NULL) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1631 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1632 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1633 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1634 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1635 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
1636 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
1637 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
1638
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1639 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1640 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
1641 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1642 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1643 "unable to connect to chatnav server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1644 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1645 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1646 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
1647 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1648 break;
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1649
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1650 case 0xe: { /* Chat */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1651 struct chat_connection *ccon;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1652
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1653 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1654 if (tstconn == NULL) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1655 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1656 "unable to connect to chat server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1657 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1658 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1659 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1660
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
1661 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
1662 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
1663
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1664 ccon = g_new0(struct chat_connection, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1665 ccon->conn = tstconn;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1666 ccon->gc = gc;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1667 ccon->fd = -1;
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1668 ccon->name = g_strdup(redir->chat.room);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1669 ccon->exchange = redir->chat.exchange;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1670 ccon->instance = redir->chat.instance;
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1671 ccon->show = extract_name(redir->chat.room);
4634
d19872836812 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1672
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1673 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1674 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
1675 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1676 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1677 "unable to connect to chat server\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1678 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1679 g_free(ccon->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1680 g_free(ccon->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1681 g_free(ccon);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1682 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1683 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
1684 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1685 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1686 "Connected to chat room %s exchange %hu\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1687 ccon->name, ccon->exchange);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1688 } break;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1689
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1690 case 0x0010: { /* icon */
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1691 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1692 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1693 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1694 g_free(host);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1695 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1696 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1697 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
1698 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
1699
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1700 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1701 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
1702 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1703 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1704 "unable to connect to icon server\n");
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1705 g_free(host);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1706 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1707 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1708 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1709 } break;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1710
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1711 case 0x0018: { /* email */
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1712 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1713 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1714 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1715 g_free(host);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1716 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1717 }
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
1718 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
1719 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
1720
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1721 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1722 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
1723 aim_conn_kill(sess, &tstconn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1724 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1725 "unable to connect to email server\n");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1726 g_free(host);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1727 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1728 }
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
1729 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1730 } break;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
1731
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1732 default: /* huh? */
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1733 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1734 "got redirect for unknown service 0x%04hx\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1735 redir->group);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1736 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1737 }
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 g_free(host);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1740 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1741 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1742
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1743 static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1744 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1745 OscarData *od = gc->proto_data;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1746 struct buddyinfo *bi;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1747 time_t time_idle = 0, signon = 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1748 int type = 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1749 int caps = 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1750 va_list ap;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1751 aim_userinfo_t *info;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1752
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1753 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
1754 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1755 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1756
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1757 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1758 caps = info->capabilities;
3267
5947e31a01c0 [gaim-migrate @ 3285]
Sean Egan <seanegan@gmail.com>
parents: 3214
diff changeset
1759 if (info->flags & AIM_FLAG_ACTIVEBUDDY)
5947e31a01c0 [gaim-migrate @ 3285]
Sean Egan <seanegan@gmail.com>
parents: 3214
diff changeset
1760 type |= UC_AB;
6318
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
1761 if (caps & AIM_CAPS_HIPTOP)
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
1762 type |= UC_HIPTOP;
3267
5947e31a01c0 [gaim-migrate @ 3285]
Sean Egan <seanegan@gmail.com>
parents: 3214
diff changeset
1763
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1764 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1765 if (info->flags & AIM_FLAG_UNCONFIRMED)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1766 type |= UC_UNCONFIRMED;
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1767 if (info->flags & AIM_FLAG_ADMINISTRATOR)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1768 type |= UC_ADMIN;
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1769 if (info->flags & AIM_FLAG_AOL)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1770 type |= UC_AOL;
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1771 if (info->flags & AIM_FLAG_FREE)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1772 type |= UC_NORMAL;
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1773 if (info->flags & AIM_FLAG_AWAY)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1774 type |= UC_UNAVAILABLE;
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1775 if (info->flags & AIM_FLAG_WIRELESS)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1776 type |= UC_WIRELESS;
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
1777 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1778 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
1779 type = (info->icqinfo.status << 16);
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
1780 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
1781 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1782 type |= UC_UNAVAILABLE;
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
1783 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1784 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1785
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
1786 if (caps & AIM_CAPS_ICQ_DIRECT)
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
1787 caps ^= AIM_CAPS_ICQ_DIRECT;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1788
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1789 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1790 time(&time_idle);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1791 time_idle -= info->idletime*60;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1792 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1793
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1794 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE)
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1795 signon = info->onlinesince;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1796 else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1797 signon = time(NULL) - info->sessionlen;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1798
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1799 if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), info->sn))
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1800 gaim_connection_set_display_name(gc, info->sn);
2305
0371b905baef [gaim-migrate @ 2315]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2303
diff changeset
1801
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
1802 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, info->sn));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1803 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1804 bi = g_new0(struct buddyinfo, 1);
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
1805 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(gc->account, info->sn)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1806 }
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
1807 bi->typingnot = FALSE;
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
1808 bi->ico_informed = FALSE;
6857
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
1809 bi->ipaddr = info->icqinfo.ipaddr;
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
1810
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
1811 /* Available message stuff */
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
1812 free(bi->availmsg);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1813 if (info->avail != NULL)
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1814 if (info->avail_encoding) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1815 gchar *enc = g_strdup_printf("charset=\"%s\"", info->avail_encoding);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1816 bi->availmsg = oscar_encoding_to_utf8(enc, info->avail, info->avail_len);
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
1817 g_free(enc);
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
1818 } else {
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
1819 /* No explicit encoding means utf8. Yay. */
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1820 bi->availmsg = g_strdup(info->avail);
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
1821 }
5837
a48c338dff6c [gaim-migrate @ 6268]
Mark Doliner <mark@kingant.net>
parents: 5836
diff changeset
1822 else
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
1823 bi->availmsg = NULL;
4732
c15e0699acae [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1824
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
1825 /* Server stored icon stuff */
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1826 if (info->iconcsumlen) {
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
1827 const char *filename = NULL, *saved_b16 = NULL;
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
1828 char *b16 = NULL;
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1829 GaimBuddy *b = NULL;
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1830
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
1831 b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1832 b = gaim_find_buddy(gc->account, info->sn);
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1833 /*
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1834 * 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
1835 * we want to know.
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1836 */
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
1837 filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon");
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1838 if (filename != NULL) {
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1839 if (g_file_test(filename, G_FILE_TEST_EXISTS))
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
1840 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
1841 "icon_checksum");
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1842 } else
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1843 saved_b16 = NULL;
7054
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7045
diff changeset
1844
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1845 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1846 GSList *cur = od->requesticon;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1847 while (cur && aim_sncmp((char *)cur->data, info->sn))
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1848 cur = cur->next;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1849 if (!cur) {
7475
08ce2a94d9c7 [gaim-migrate @ 8088]
Mark Doliner <mark@kingant.net>
parents: 7474
diff changeset
1850 od->requesticon = g_slist_append(od->requesticon, g_strdup(gaim_normalize(gc->account, info->sn)));
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1851 if (od->icontimer)
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1852 g_source_remove(od->icontimer);
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1853 od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc);
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1854 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1855 }
6053
74b281b4ae29 [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1856 g_free(b16);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1857 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1858
5628
9a34e950792e [gaim-migrate @ 6035]
Mark Doliner <mark@kingant.net>
parents: 5591
diff changeset
1859 serv_got_update(gc, info->sn, 1, (info->warnlevel/10.0) + 0.5, signon, time_idle, type);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1860
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1861 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1862 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1863
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1864 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
1865 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1866 OscarData *od = gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1867 va_list ap;
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
1868 aim_userinfo_t *info;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1869
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1870 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
1871 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1872 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1873
4732
c15e0699acae [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1874 serv_got_update(gc, info->sn, 0, 0, 0, 0, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1875
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
1876 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
1877
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1878 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1879 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1880
3730
a20bf3d247ff [gaim-migrate @ 3868]
Sean Egan <seanegan@gmail.com>
parents: 3725
diff changeset
1881 static void cancel_direct_im(struct ask_direct *d) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1882 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Freeing DirectIM prompts.\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1883
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1884 g_free(d->sn);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1885 g_free(d);
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
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1888 static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1889 struct direct_im *dim = data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1890 GaimConnection *gc = dim->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1891 OscarData *od = gc->proto_data;
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
1892 GaimConversation *cnv;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1893 char buf[256];
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1894 struct sockaddr name;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1895 socklen_t name_len = 1;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1896
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1897 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1898 g_free(dim);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1899 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1900 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1901
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1902 if (source < 0) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1903 g_free(dim);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1904 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1905 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1906
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1907 dim->conn->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1908 aim_conn_completeconnect(od->sess, dim->conn);
6640
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6623
diff changeset
1909 cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, dim->name);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1910
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1911 /* This is the best way to see if we're connected or not */
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1912 if (getpeername(source, &name, &name_len) == 0) {
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1913 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name);
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1914 dim->connected = TRUE;
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
1915 gaim_conversation_write(cnv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1916 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1917 od->direct_ims = g_slist_append(od->direct_ims, dim);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
1918
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1919 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1920 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1921
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1922 /* BBB */
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
1923 /*
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1924 * This is called after a remote AIM user has connected to us. We
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1925 * want to do some voodoo with the socket file descriptors, add a
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1926 * 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
1927 */
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1928 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
1929 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1930 OscarData *od = (OscarData *)gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1931 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1932 struct aim_oft_info *oft_info;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1933 va_list ap;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1934 aim_conn_t *conn, *listenerconn;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1935
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1936 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1937 "AAA - in oscar_sendfile_estblsh\n");
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1938 va_start(ap, fr);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1939 conn = va_arg(ap, aim_conn_t *);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1940 listenerconn = va_arg(ap, aim_conn_t *);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1941 va_end(ap);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1942
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1943 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1944 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1945
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1946 if (!(oft_info = xfer->data))
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1947 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1948
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1949 /* Stop watching listener conn; watch transfer conn instead */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1950 gaim_input_remove(xfer->watcher);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1951 aim_conn_kill(sess, &listenerconn);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1952
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1953 oft_info->conn = conn;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1954 xfer->fd = oft_info->conn->fd;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1955
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1956 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, oscar_sendfile_ack, 0);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1957 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, oscar_sendfile_done, 0);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1958 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1959
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1960 /* Inform the other user that we are connected and ready to transfer */
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1961 aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1962
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1963 return 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1964 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1965
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
1966 /*
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1967 * This is the gaim callback passed to gaim_proxy_connect when connecting to another AIM
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1968 * user in order to transfer a file.
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
1969 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1970 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
1971 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1972 struct aim_oft_info *oft_info;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
1973
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1974 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1975 "AAA - in oscar_sendfile_connected\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1976 if (!(xfer = data))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1977 return;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1978 if (!(oft_info = xfer->data))
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1979 return;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1980 if (source < 0)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1981 return;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1982
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1983 xfer->fd = source;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1984 oft_info->conn->fd = source;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1985
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1986 aim_conn_completeconnect(oft_info->sess, oft_info->conn);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1987 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
1988
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1989 /* Inform the other user that we are connected and ready to transfer */
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1990 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1991
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1992 return;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1993 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1994
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
1995 /*
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1996 * 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
1997 * 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
1998 * 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
1999 * get like totally ready to like, receive the file, kay?
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2000 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2001 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
2002 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2003 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2004 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2005 struct aim_oft_info *oft_info;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2006 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2007 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2008 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2009 struct aim_fileheader_t *fh;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2010
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2011 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2012 "AAA - in oscar_sendfile_prompt\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2013 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2014 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2015 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2016 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2017 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2018
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2019 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2020 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2021
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2022 if (!(oft_info = xfer->data))
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2023 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2024
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2025 /* We want to stop listening with a normal thingy */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2026 gaim_input_remove(xfer->watcher);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2027 xfer->watcher = 0;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2028
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2029 /* They sent us some information about the file they're sending */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2030 memcpy(&oft_info->fh, fh, sizeof(*fh));
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2031
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2032 /* Fill in the cookie */
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2033 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2034
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2035 /* 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
2036 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
2037 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2038
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2039 return 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2040 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2041
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2042 /*
4657
745f583372cd [gaim-migrate @ 4968]
Mark Doliner <mark@kingant.net>
parents: 4656
diff changeset
2043 * 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
2044 * 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
2045 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2046 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
2047 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2048 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2049 GaimXfer *xfer;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2050 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2051 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2052 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2053 struct aim_fileheader_t *fh;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2054
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2055 gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_sendfile_ack\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2056 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2057 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2058 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2059 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2060 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2061
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2062 if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2063 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2064
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2065 /* We want to stop listening with a normal thingy */
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2066 gaim_input_remove(xfer->watcher);
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2067 xfer->watcher = 0;
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2068
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2069 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2070
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2071 return 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2072 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2073
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2074 /*
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2075 * 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
2076 * so we can close our direct connection and what not.
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2077 */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2078 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
2079 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2080 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2081 GaimXfer *xfer;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2082 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2083 aim_conn_t *conn;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2084 fu8_t *cookie;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2085 struct aim_fileheader_t *fh;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2086
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2087 gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_sendfile_done\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2088 va_start(ap, fr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2089 conn = va_arg(ap, aim_conn_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2090 cookie = va_arg(ap, fu8_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2091 fh = va_arg(ap, struct aim_fileheader_t *);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2092 va_end(ap);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2093
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2094 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2095 return 1;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2096
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2097 xfer->fd = conn->fd;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2098 gaim_xfer_end(xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2099
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2100 return 0;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2101 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2102
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2103 static void accept_direct_im(struct ask_direct *d) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2104 GaimConnection *gc = d->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2105 OscarData *od;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2106 struct direct_im *dim;
2945
6a26e125b623 [gaim-migrate @ 2958]
Rob Flynn <gaim@robflynn.com>
parents: 2943
diff changeset
2107 char *host; int port = 4443;
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2108 int i, rc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2109
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2110 if (!g_list_find(gaim_connections_get_all(), gc)) {
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2111 cancel_direct_im(d);
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2112 return;
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2113 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2114
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2115 od = (OscarData *)gc->proto_data;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2116 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Accepted DirectIM.\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2117
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2118 dim = find_direct_im(od, d->sn);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2119 if (dim) {
3730
a20bf3d247ff [gaim-migrate @ 3868]
Sean Egan <seanegan@gmail.com>
parents: 3725
diff changeset
2120 cancel_direct_im(d); /* 40 */
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2121 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2122 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2123 dim = g_new0(struct direct_im, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2124 dim->gc = d->gc;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2125 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2126
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2127 dim->conn = aim_odc_connect(od->sess, d->sn, NULL, d->cookie);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2128 if (!dim->conn) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2129 g_free(dim);
3730
a20bf3d247ff [gaim-migrate @ 3868]
Sean Egan <seanegan@gmail.com>
parents: 3725
diff changeset
2130 cancel_direct_im(d);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2131 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2132 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2133
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2134 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING,
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2135 gaim_odc_incoming, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2136 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING,
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2137 gaim_odc_typing, 0);
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3031
diff changeset
2138 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER,
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
2139 gaim_odc_update_ui, 0);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2140 for (i = 0; i < (int)strlen(d->ip); i++) {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2141 if (d->ip[i] == ':') {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2142 port = atoi(&(d->ip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2143 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2144 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2145 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2146 host = g_strndup(d->ip, i);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2147 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2148 rc = gaim_proxy_connect(gc->account, host, port, oscar_odc_callback, dim);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2149 g_free(host);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
2150 if (rc < 0) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2151 aim_conn_kill(od->sess, &dim->conn);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2152 g_free(dim);
3730
a20bf3d247ff [gaim-migrate @ 3868]
Sean Egan <seanegan@gmail.com>
parents: 3725
diff changeset
2153 cancel_direct_im(d);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2154 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2155 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2156
3730
a20bf3d247ff [gaim-migrate @ 3868]
Sean Egan <seanegan@gmail.com>
parents: 3725
diff changeset
2157 cancel_direct_im(d);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2158
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2159 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2160 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2161
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2162 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
2163 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2164 OscarData *od = gc->proto_data;
7475
08ce2a94d9c7 [gaim-migrate @ 8088]
Mark Doliner <mark@kingant.net>
parents: 7474
diff changeset
2165 gchar *tmp;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2166 GaimConvImFlags flags = 0;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
2167 gsize convlen;
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
2168 GError *err = NULL;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2169 struct buddyinfo *bi;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2170 const char *iconfile;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2171
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
2172 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, userinfo->sn));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2173 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2174 bi = g_new0(struct buddyinfo, 1);
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
2175 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(gc->account, userinfo->sn)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2176 }
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
2177
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
2178 if (args->icbmflags & AIM_IMFLAGS_AWAY)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2179 flags |= GAIM_CONV_IM_AUTO_RESP;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2180
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2181 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2182 bi->typingnot = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2183 else
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2184 bi->typingnot = FALSE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2185
4380
fe465b7d9440 [gaim-migrate @ 4646]
Mark Doliner <mark@kingant.net>
parents: 4374
diff changeset
2186 if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2187 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2188 "%s has an icon\n", userinfo->sn);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2189 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
2190 bi->ico_need = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2191 bi->ico_len = args->iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2192 bi->ico_csum = args->iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
2193 bi->ico_time = args->iconstamp;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2194 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2195 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2196
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2197 if ((iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc))) &&
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
2198 (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
2199 FILE *file;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2200 struct stat st;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2201
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2202 if (!stat(iconfile, &st)) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2203 char *buf = g_malloc(st.st_size);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2204 file = fopen(iconfile, "rb");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2205 if (file) {
2603
24664768a739 [gaim-migrate @ 2616]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2597
diff changeset
2206 int len = fread(buf, 1, st.st_size, file);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2207 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2208 "Sending buddy icon to %s (%d bytes, "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2209 "%lu reported)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2210 userinfo->sn, len, st.st_size);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2211 aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size,
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2212 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2213 fclose(file);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
2214 } else
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2215 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2216 "Can't open buddy icon file!\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2217 g_free(buf);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
2218 } else
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2219 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2220 "Can't stat buddy icon file!\n");
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2221 }
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2222
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2223 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2224 "Character set is %hu %hu\n", args->charset, args->charsubset);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2225 if (args->icbmflags & AIM_IMFLAGS_UNICODE) {
3722
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2226 /* This message is marked as UNICODE, so we have to
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2227 * convert it to utf-8 before handing it to the gaim core.
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2228 * This conversion should *never* fail, if it does it
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2229 * means that either the incoming ICBM is corrupted or
4662
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
2230 * there is something we don't understand about it.
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
2231 * For the record, AIM Unicode is big-endian UCS-2 */
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
2232
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2233 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Received UNICODE IM\n");
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2234
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2235 if (!args->msg || !args->msglen)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2236 return 1;
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
2237
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
2238 tmp = g_convert(args->msg, args->msglen, "UTF-8", "UCS-2BE", NULL, &convlen, &err);
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
2239 if (err) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2240 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2241 "Unicode IM conversion: %s\n", err->message);
7475
08ce2a94d9c7 [gaim-migrate @ 8088]
Mark Doliner <mark@kingant.net>
parents: 7474
diff changeset
2242 tmp = g_strdup(_("(There was an error receiving this message)"));
4800
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
2243 g_error_free(err);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2244 }
3722
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2245 } else {
3850
daf2cec08eac [gaim-migrate @ 4002]
Luke Schierer <lschiere@pidgin.im>
parents: 3783
diff changeset
2246 /* This will get executed for both AIM_IMFLAGS_ISO_8859_1 and
3722
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2247 * unflagged messages, which are ASCII. That's OK because
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2248 * ASCII is a strict subset of ISO-8859-1; this should
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2249 * help with compatibility with old, broken versions of
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2250 * gaim (everything before 0.60) and other broken clients
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2251 * that will happily send ISO-8859-1 without marking it as
5ab55c267294 [gaim-migrate @ 3855]
Luke Schierer <lschiere@pidgin.im>
parents: 3717
diff changeset
2252 * such */
4662
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
2253 if (args->icbmflags & AIM_IMFLAGS_ISO_8859_1)
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2254 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2255 "Received ISO-8859-1 IM\n");
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2256
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2257 if (!args->msg || !args->msglen)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2258 return 1;
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2259
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
2260 tmp = g_convert(args->msg, args->msglen, "UTF-8", "ISO-8859-1", NULL, &convlen, &err);
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
2261 if (err) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2262 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2263 "ISO-8859-1 IM conversion: %s\n", err->message);
7475
08ce2a94d9c7 [gaim-migrate @ 8088]
Mark Doliner <mark@kingant.net>
parents: 7474
diff changeset
2264 tmp = g_strdup(_("(There was an error receiving this message)"));
4800
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
2265 g_error_free(err);
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
2266 }
3642
5e50f6746509 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
2267 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2268
7478
3c21f3084ff0 [gaim-migrate @ 8091]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7475
diff changeset
2269 /* gaim_str_strip_cr(tmp); */
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
2270 serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2271 g_free(tmp);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2272
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2273 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2274 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2275
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2276 static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2277 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2278 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2279 const char *username = gaim_account_get_username(gaim_connection_get_account(gc));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2280
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2281 if (!args)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2282 return 0;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2283
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2284 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2285 "rendezvous with %s, status is %hu\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2286 userinfo->sn, args->status);
2869
9b029055cfba [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2287
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2288 if (args->reqclass & AIM_CAPS_CHAT) {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2289 char *name;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2290 GHashTable *components;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2291
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2292 if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange || !args->msg)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2293 return 1;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2294 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
2295 g_free);
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2296 name = extract_name(args->info.chat.roominfo.name);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2297 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
2298 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
2299 serv_got_chat_invite(gc,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2300 name ? name : args->info.chat.roominfo.name,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2301 userinfo->sn,
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
2302 args->msg,
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2303 components);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2304 if (name)
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2305 g_free(name);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2306 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2307 /* BBB */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2308 if (args->status == AIM_RENDEZVOUS_PROPOSE) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2309 /* Someone wants to send a file (or files) to us */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2310 GaimXfer *xfer;
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2311 struct aim_oft_info *oft_info;
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2312
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2313 if (!args->cookie || !args->port || !args->verifiedip ||
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2314 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2315 !args->info.sendfile.totfiles || !args->reqclass) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2316 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2317 "%s tried to send you a file with incomplete "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2318 "information.\n", userinfo->sn);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2319 if (args->proxyip)
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2320 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2321 "IP for a proxy server was given. Gaim "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2322 "does not support this yet.\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2323 return 1;
4656
e557a10a9541 [gaim-migrate @ 4967]
Mark Doliner <mark@kingant.net>
parents: 4652
diff changeset
2324 }
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2325
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2326 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2327 /* last char of the ft req is a star, they are sending us a
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2328 * directory -- remove the star and trailing slash so we dont save
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2329 * directories that look like 'dirname\*' -- arl */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2330 char *tmp = strrchr(args->info.sendfile.filename, '\\');
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2331 if (tmp && (tmp[1] == '*')) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2332 tmp[0] = '\0';
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2333 }
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2334 }
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2335
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2336 /* Build the file transfer handle */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2337 xfer = gaim_xfer_new(gc->account, GAIM_XFER_RECEIVE, userinfo->sn);
5163
354518ac4e11 [gaim-migrate @ 5527]
Mark Doliner <mark@kingant.net>
parents: 5149
diff changeset
2338 xfer->remote_ip = g_strdup(args->verifiedip);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2339 xfer->remote_port = args->port;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2340 gaim_xfer_set_filename(xfer, args->info.sendfile.filename);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2341 gaim_xfer_set_size(xfer, args->info.sendfile.totsize);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2342
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2343 /* Create the oscar-specific data */
5163
354518ac4e11 [gaim-migrate @ 5527]
Mark Doliner <mark@kingant.net>
parents: 5149
diff changeset
2344 oft_info = aim_oft_createinfo(od->sess, args->cookie, userinfo->sn, args->clientip, xfer->remote_port, 0, 0, NULL);
4898
bd37db7531e4 [gaim-migrate @ 5230]
Mark Doliner <mark@kingant.net>
parents: 4889
diff changeset
2345 if (args->proxyip)
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2346 oft_info->proxyip = g_strdup(args->proxyip);
4898
bd37db7531e4 [gaim-migrate @ 5230]
Mark Doliner <mark@kingant.net>
parents: 4889
diff changeset
2347 if (args->verifiedip)
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2348 oft_info->verifiedip = g_strdup(args->verifiedip);
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2349 xfer->data = oft_info;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2350
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2351 /* Setup our I/O op functions */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2352 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2353 gaim_xfer_set_start_fnc(xfer, oscar_xfer_start);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2354 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2355 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2356 gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2357 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2358
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2359 /*
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2360 * XXX - Should do something with args->msg, args->encoding, and args->language
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2361 * probably make it apply to all ch2 messages.
3752
b32474e522fa [gaim-migrate @ 3890]
Luke Schierer <lschiere@pidgin.im>
parents: 3730
diff changeset
2362 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2363
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2364 /* Keep track of this transfer for later */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2365 od->file_transfers = g_slist_append(od->file_transfers, xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2366
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2367 /* Now perform the request */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2368 gaim_xfer_request(xfer);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2369 } else if (args->status == AIM_RENDEZVOUS_CANCEL) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2370 /* The other user wants to cancel a file transfer */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2371 GaimXfer *xfer;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2372 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2373 "AAA - File transfer canceled by remote user\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2374 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
2375 gaim_xfer_cancel_remote(xfer);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2376 } else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2377 /*
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2378 * This gets sent by the receiver of a file
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2379 * as they connect directly to us. If we don't
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2380 * get this, then maybe a third party connected
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2381 * to us, and we shouldn't send them anything.
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2382 */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2383 } else {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2384 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2385 "unknown rendezvous status!\n");
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2386 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2387 } else if (args->reqclass & AIM_CAPS_GETFILE) {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2388 } else if (args->reqclass & AIM_CAPS_VOICE) {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2389 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
2390 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
2391 userinfo->sn, args->info.icon.icon,
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
2392 args->info.icon.length);
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
2393 } else if (args->reqclass & AIM_CAPS_DIRECTIM) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2394 struct ask_direct *d = g_new0(struct ask_direct, 1);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2395 char buf[256];
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2396
4212
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
2397 if (!args->verifiedip) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2398 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2399 "directim kill blocked (%s)\n", userinfo->sn);
4650
4938d12f6d48 [gaim-migrate @ 4961]
Mark Doliner <mark@kingant.net>
parents: 4649
diff changeset
2400 return 1;
4212
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
2401 }
bbd1236e9cc9 [gaim-migrate @ 4449]
Rob Flynn <gaim@robflynn.com>
parents: 4207
diff changeset
2402
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2403 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2404 "%s received direct im request from %s (%s)\n",
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2405 username, userinfo->sn, args->verifiedip);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2406
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2407 d->gc = gc;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2408 d->sn = g_strdup(userinfo->sn);
2869
9b029055cfba [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2409 strncpy(d->ip, args->verifiedip, sizeof(d->ip));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2410 memcpy(d->cookie, args->cookie, 8);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2411 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
2412
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2413 gaim_request_action(gc, NULL, buf,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2414 _("This requires a direct connection between "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2415 "the two computers and is necessary for IM "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2416 "Images. Because your IP address will be "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2417 "revealed, this may be considered a privacy "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2418 "risk."), 0, d, 2,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2419 _("Connect"), G_CALLBACK(accept_direct_im),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2420 _("Cancel"), G_CALLBACK(cancel_direct_im));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2421 } else {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2422 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2423 "Unknown reqclass %hu\n", args->reqclass);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2424 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2425
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2426 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2427 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2428
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2429 /*
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2430 * Authorization Functions
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2431 * 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
2432 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2433 */
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2434 /* When you ask other people for authorization */
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2435 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
2436 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2437
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2438 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2439 OscarData *od = gc->proto_data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2440 GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2441 GaimGroup *group = gaim_find_buddys_group(buddy);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2442 if (buddy && group) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2443 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2444 "ssi: adding buddy %s to group %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2445 buddy->name, group->name);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
2446 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
2447 if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
2448 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 1);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2449 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2450 }
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2451 }
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2452
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2453 static void gaim_auth_request_msgprompt(struct name_data *data) {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2454 gaim_request_input(data->gc, NULL, _("Authorization Request Message:"),
6035
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
2455 NULL, _("Please authorize me!"), TRUE, FALSE,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2456 _("OK"), G_CALLBACK(gaim_auth_request),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2457 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2458 data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2459 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2460
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2461 static void gaim_auth_dontrequest(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2462 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2463
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2464 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2465 /* OscarData *od = gc->proto_data; */
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2466 /* XXX - Take the buddy out of our buddy list */
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2467 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2468
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2469 oscar_free_name_data(data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2470 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2471
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2472 static void gaim_auth_sendrequest(GaimConnection *gc, const char *name) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2473 struct name_data *data = g_new(struct name_data, 1);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2474 GaimBuddy *buddy;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2475 gchar *dialog_msg, *nombre;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2476
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
2477 buddy = gaim_find_buddy(gc->account, name);
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
2478 if (buddy && (gaim_get_buddy_alias_only(buddy)))
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
2479 nombre = g_strdup_printf("%s (%s)", name, gaim_get_buddy_alias_only(buddy));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2480 else
4830
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
2481 nombre = NULL;
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
2482
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
2483 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
2484 data->gc = gc;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2485 data->name = g_strdup(name);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2486 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2487
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2488 gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2489 0, data, 2,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2490 _("Request Authorization"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2491 G_CALLBACK(gaim_auth_request_msgprompt),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2492 _("Cancel"), G_CALLBACK(gaim_auth_dontrequest));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2493
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2494 g_free(dialog_msg);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2495 g_free(nombre);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2496 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2497
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2498 /* When other people ask you for authorization */
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2499 static void gaim_auth_grant(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2500 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2501
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2502 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2503 OscarData *od = gc->proto_data;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
2504 #ifdef NOSSI
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2505 GaimBuddy *buddy;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2506 gchar message;
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2507 message = 0;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
2508 buddy = gaim_find_buddy(gc->account, data->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2509 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message);
7015
dece74f05509 [gaim-migrate @ 7578]
Christian Hammond <chipx86@chipx86.com>
parents: 7011
diff changeset
2510 gaim_account_notify_added(gc->account, NULL, data->name, (buddy ? gaim_get_buddy_alias_only(buddy) : NULL), NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2511 #else
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
2512 aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2513 #endif
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2514 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2515
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2516 oscar_free_name_data(data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2517 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2518
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2519 /* When other people ask you for authorization */
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2520 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
2521 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2522
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2523 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2524 OscarData *od = gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2525 #ifdef NOSSI
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2526 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, msg ? msg : _("No reason given."));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2527 #else
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
2528 aim_ssi_sendauthreply(od->sess, data->name, 0x00, msg ? msg : _("No reason given."));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2529 #endif
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2530 }
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2531 }
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2532
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2533 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2534 gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"),
6035
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
2535 NULL, _("No reason given."), TRUE, FALSE,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2536 _("OK"), G_CALLBACK(gaim_auth_dontgrant),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2537 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2538 data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2539 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2540
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2541 /* When someone sends you buddies */
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2542 static void gaim_icq_buddyadd(struct name_data *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2543 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2544
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2545 if (g_list_find(gaim_connections_get_all(), gc)) {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
2546 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
2547 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2548
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2549 oscar_free_name_data(data);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2550 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2551
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2552 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
2553 GaimConnection *gc = sess->aux_data;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2554 gchar **msg1, **msg2;
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2555 GError *err = NULL;
6051
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
2556 int i, numtoks;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2557
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2558 if (!args->type || !args->msg || !args->uin)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2559 return 1;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2560
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2561 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2562 "Received a channel 4 message of type 0x%02hhx.\n", args->type);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2563
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2564 /* Split up the message at the delimeter character, then convert each string to UTF-8 */
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2565 msg1 = g_strsplit(args->msg, "\376", 0);
6051
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
2566 for (numtoks=0; msg1[numtoks]; numtoks++);
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
2567 msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2568 for (i=0; msg1[i]; i++) {
7478
3c21f3084ff0 [gaim-migrate @ 8091]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7475
diff changeset
2569 gaim_str_strip_cr(msg1[i]);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2570 msg2[i] = g_convert(msg1[i], strlen(msg1[i]), "UTF-8", "ISO-8859-1", NULL, NULL, &err);
4800
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
2571 if (err) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2572 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2573 "Error converting a string from ISO-8859-1 to "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2574 "UTF-8 in oscar ICBM channel 4 parsing\n");
4800
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
2575 g_error_free(err);
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
2576 }
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2577 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2578 msg2[i] = NULL;
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2579
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2580 switch (args->type) {
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2581 case 0x01: { /* MacICQ message or basic offline message */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2582 if (i >= 1) {
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
2583 gchar *uin = g_strdup_printf("%u", args->uin);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2584 if (t) { /* This is an offline message */
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2585 /* I think this timestamp is in UTC, or something */
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
2586 serv_got_im(gc, uin, msg2[0], 0, t);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2587 } else { /* This is a message from MacICQ/Miranda */
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
2588 serv_got_im(gc, uin, msg2[0], 0, time(NULL));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2589 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2590 g_free(uin);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2591 }
3316
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
2592 } break;
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
2593
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2594 case 0x04: { /* Someone sent you a URL */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2595 if (i >= 2) {
7385
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2596 if (msg2[1] != NULL) {
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2597 gchar *uin = g_strdup_printf("%u", args->uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2598 gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>",
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2599 msg2[1],
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2600 (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2601 serv_got_im(gc, uin, message, 0, time(NULL));
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2602 g_free(uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2603 g_free(message);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2604 }
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2605 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2606 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2607
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2608 case 0x06: { /* Someone requested authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2609 if (i >= 6) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2610 struct name_data *data = g_new(struct name_data, 1);
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
2611 gchar *dialog_msg = g_strdup_printf(_("The user %u wants to add you to their buddy list for the following reason:\n%s"), args->uin, msg2[5] ? msg2[5] : _("No reason given."));
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2612 gaim_debug(GAIM_DEBUG_INFO, "oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
2613 "Received an authorization request from UIN %u\n",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2614 args->uin);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2615 data->gc = gc;
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
2616 data->name = g_strdup_printf("%u", args->uin);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2617 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2618
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2619 gaim_request_action(gc, NULL, _("Authorization Request"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2620 dialog_msg, 0, data, 2,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2621 _("Authorize"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2622 G_CALLBACK(gaim_auth_grant),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2623 _("Deny"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2624 G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2625 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2626 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2627 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2628
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2629 case 0x07: { /* Someone has denied you authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2630 if (i >= 1) {
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2631 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
2632 gaim_notify_info(gc, NULL, _("ICQ authorization denied."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2633 dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2634 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2635 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2636 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2637
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2638 case 0x08: { /* Someone has granted you authorization */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2639 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
2640 gaim_notify_info(gc, NULL, "ICQ authorization accepted.",
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2641 dialog_msg);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2642 g_free(dialog_msg);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2643 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2644
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2645 case 0x09: { /* Message from the Godly ICQ server itself, I think */
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2646 if (i >= 5) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2647 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
2648 gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2649 g_free(dialog_msg);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2650 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2651 } break;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2652
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2653 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
2654 if (i >= 6) {
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2655 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
2656 gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2657 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2658 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2659 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2660
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2661 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
2662 if (i >= 6) {
4308
b3a14484fc2f [gaim-migrate @ 4562]
Mark Doliner <mark@kingant.net>
parents: 4303
diff changeset
2663 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
2664 gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2665 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2666 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2667 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2668
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2669 case 0x12: {
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2670 /* 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
2671 /* Someone added you to their buddy list? */
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2672 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2673
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2674 case 0x13: { /* Someone has sent you some ICQ buddies */
7631
ea2d07ad05a9 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7621
diff changeset
2675 guint i, num;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2676 gchar **text;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2677 text = g_strsplit(args->msg, "\376", 0);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2678 if (text) {
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2679 num = 0;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2680 for (i=0; i<strlen(text[0]); i++)
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2681 num = num*10 + text[0][i]-48;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2682 for (i=0; i<num; i++) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2683 struct name_data *data = g_new(struct name_data, 1);
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2684 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
2685 data->gc = gc;
4790
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
2686 data->name = g_strdup(text[i*2+1]);
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
2687 data->nick = g_strdup(text[i*2+2]);
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2688
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2689 gaim_request_action(gc, NULL, message,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2690 _("Do you want to add this buddy "
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2691 "to your buddy list?"),
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2692 0, data, 2,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2693 _("Add"), G_CALLBACK(gaim_icq_buddyadd),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2694 _("Decline"), G_CALLBACK(oscar_free_name_data));
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2695 g_free(message);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2696 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2697 g_strfreev(text);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2698 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2699 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2700
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2701 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
2702 /* This is boring and silly. */
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2703 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2704
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2705 default: {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2706 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2707 "Received a channel 4 message of unknown type "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2708 "(type 0x%02hhx).\n", args->type);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2709 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2710 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2711
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2712 g_strfreev(msg1);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2713 g_strfreev(msg2);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2714
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2715 return 1;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2716 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2717
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2718 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
2719 fu16_t channel;
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2720 int ret = 0;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2721 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2722 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2723
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2724 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2725 channel = (fu16_t)va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2726 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2727
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2728 switch (channel) {
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2729 case 1: { /* standard message */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2730 struct aim_incomingim_ch1_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2731 args = va_arg(ap, struct aim_incomingim_ch1_args *);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2732 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2733 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2734
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2735 case 2: { /* rendevous */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2736 struct aim_incomingim_ch2_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2737 args = va_arg(ap, struct aim_incomingim_ch2_args *);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2738 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2739 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2740
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2741 case 4: { /* ICQ */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2742 struct aim_incomingim_ch4_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2743 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2744 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2745 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2746
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2747 default: {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2748 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2749 "ICBM received on unsupported channel (channel "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2750 "0x%04hx).", channel);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2751 } break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2752 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2753
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2754 va_end(ap);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2755
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2756 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2757 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2758
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2759 static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2760 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2761 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2762 fu16_t chan, nummissed, reason;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2763 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2764
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2765 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2766 chan = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2767 userinfo = va_arg(ap, aim_userinfo_t *);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2768 nummissed = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2769 reason = (fu16_t)va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2770 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2771
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2772 switch(reason) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2773 case 0: /* Invalid (0) */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2774 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2775 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2776 "You missed %hu message from %s because it was invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2777 "You missed %hu messages from %s because they were invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2778 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2779 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2780 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2781 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2782 case 1: /* Message too large */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2783 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2784 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2785 "You missed %hu message from %s because it was too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2786 "You missed %hu messages from %s because they were too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2787 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2788 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2789 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2790 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2791 case 2: /* Rate exceeded */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2792 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2793 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2794 "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
2795 "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
2796 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2797 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2798 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2799 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2800 case 3: /* Evil Sender */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2801 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2802 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2803 "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
2804 "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
2805 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2806 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2807 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2808 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2809 case 4: /* Evil Receiver */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2810 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2811 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2812 "You missed %hu message from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2813 "You missed %hu messages from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2814 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2815 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2816 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2817 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2818 default:
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2819 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2820 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2821 "You missed %hu message from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2822 "You missed %hu messages from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2823 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2824 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2825 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2826 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2827 }
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2828 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2829 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2830
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2831 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2832 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2833
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2834 static char *gaim_icq_status(int state) {
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2835 /* Make a cute little string that shows the status of the dude or dudet */
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2836 if (state & AIM_ICQ_STATE_CHAT)
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2837 return g_strdup_printf(_("Free For Chat"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2838 else if (state & AIM_ICQ_STATE_DND)
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2839 return g_strdup_printf(_("Do Not Disturb"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2840 else if (state & AIM_ICQ_STATE_OUT)
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2841 return g_strdup_printf(_("Not Available"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2842 else if (state & AIM_ICQ_STATE_BUSY)
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2843 return g_strdup_printf(_("Occupied"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2844 else if (state & AIM_ICQ_STATE_AWAY)
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2845 return g_strdup_printf(_("Away"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2846 else if (state & AIM_ICQ_STATE_WEBAWARE)
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2847 return g_strdup_printf(_("Web Aware"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2848 else if (state & AIM_ICQ_STATE_INVISIBLE)
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2849 return g_strdup_printf(_("Invisible"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2850 else
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
2851 return g_strdup_printf(_("Online"));
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2852 }
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2853
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2854 static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const char *cookie) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2855 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2856 OscarData *od = gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2857
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2858 /* BBB */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2859 switch (reason) {
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2860 case 3: { /* Decline sendfile. */
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2861 GaimXfer *xfer;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2862 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2863 "AAA - Other user declined file transfer\n");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2864 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
2865 gaim_xfer_cancel_remote(xfer);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2866 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2867
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2868 default: {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2869 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2870 "Received an unknown rendezvous client auto-response "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2871 "from %s. Type 0x%04hx\n", who, reason);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2872 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2873
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2874 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2875
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2876 return 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2877 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2878
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2879 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
2880 GaimConnection *gc = sess->aux_data;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2881
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2882 switch(reason) {
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2883 case 0x0003: { /* Reply from an ICQ status message request */
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2884 char *status_msg = gaim_icq_status(state);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2885 char *dialog_msg, **splitmsg;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2886
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2887 /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2888 splitmsg = g_strsplit(msg, "\r\n", 0);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2889
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2890 dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, status_msg, g_strjoinv("<BR>", splitmsg));
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
2891 gaim_notify_formatted(gc, NULL, _("Buddy Information"), NULL, dialog_msg, NULL, NULL);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2892
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2893 g_free(status_msg);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2894 g_free(dialog_msg);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2895 g_strfreev(splitmsg);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2896 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2897
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2898 default: {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2899 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2900 "Received an unknown client auto-response from %s. "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2901 "Type 0x%04hx\n", who, reason);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2902 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2903 } /* end of switch */
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2904
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2905 return 0;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2906 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2907
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2908 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
2909 va_list ap;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2910 fu16_t chan, reason;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2911 char *who;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2912
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2913 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2914 chan = (fu16_t)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2915 who = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2916 reason = (fu16_t)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2917
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2918 if (chan == 0x0002) { /* File transfer declined */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2919 char *cookie = va_arg(ap, char *);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2920 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2921 } else if (chan == 0x0004) { /* ICQ message */
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2922 fu32_t state = 0;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2923 char *msg = NULL;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2924 if (reason == 0x0003) {
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2925 state = va_arg(ap, fu32_t);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2926 msg = va_arg(ap, char *);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2927 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2928 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2929 }
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2930
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2931 va_end(ap);
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2932
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2933 return 1;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2934 }
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2935
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2936 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
2937 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2938 fu16_t reason;
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2939 char *m;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2940
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2941 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2942 reason = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2943 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2944
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2945 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2946 "snac threw error (reason 0x%04hx: %s)\n", reason,
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2947 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2948
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2949 m = g_strdup_printf(_("SNAC threw error: %s\n"),
5411
2c4188300aba [gaim-migrate @ 5787]
Mark Doliner <mark@kingant.net>
parents: 5402
diff changeset
2950 reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error"));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2951 gaim_notify_error(sess->aux_data, NULL, m, NULL);
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2952 g_free(m);
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2953
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2954 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2955 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2956
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2957 static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2958 #if 0
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2959 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2960 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2961 GaimXfer *xfer;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2962 #endif
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2963 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2964 fu16_t reason;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2965 char *data, *buf;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2966
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2967 va_start(ap, fr);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2968 reason = (fu16_t)va_arg(ap, unsigned int);
3752
b32474e522fa [gaim-migrate @ 3890]
Luke Schierer <lschiere@pidgin.im>
parents: 3730
diff changeset
2969 data = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2970 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2971
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2972 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2973 "Message error with data %s and reason %hu\n", data, reason);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2974
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2975 /* BBB */
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2976 #if 0
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2977 /* If this was a file transfer request, data is a cookie */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2978 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
2979 gaim_xfer_cancel_remote(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2980 return 1;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2981 }
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2982 #endif
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2983
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2984 /* Data is assumed to be the destination sn */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2985 buf = g_strdup_printf(_("Your message to %s did not get sent:"), data);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2986 gaim_notify_error(sess->aux_data, NULL, buf,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2987 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("No reason given."));
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2988 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2989
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2990 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2991 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2992
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2993 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
2994 GaimConnection *gc = sess->aux_data;
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2995 va_list ap;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2996 fu16_t type1, type2;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2997 char *sn;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2998
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2999 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3000 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3001 sn = va_arg(ap, char *);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3002 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3003 va_end(ap);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3004
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3005 switch (type2) {
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3006 case 0x0000: { /* Text has been cleared */
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3007 serv_got_typing_stopped(gc, sn);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3008 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3009
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3010 case 0x0001: { /* Paused typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
3011 serv_got_typing(gc, sn, 0, GAIM_TYPED);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3012 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3013
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3014 case 0x0002: { /* Typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
3015 serv_got_typing(gc, sn, 0, GAIM_TYPING);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3016 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3017
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3018 default: {
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5421
diff changeset
3019 gaim_debug(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
3020 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3021 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3022
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3023 return 1;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3024 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3025
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3026 /*
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3027 * 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
3028 * happens when you request info of someone who is offline.
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3029 */
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3030 static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) {
7259
22b5b81ca7e0 [gaim-migrate @ 7836]
Mark Doliner <mark@kingant.net>
parents: 7253
diff changeset
3031 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3032 va_list ap;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
3033 fu16_t reason;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3034 char *destn;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3035
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3036 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3037 reason = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3038 destn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3039 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3040
7781
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
3041 if (destn == NULL)
7793
61b5d682ddb4 [gaim-migrate @ 8439]
Mark Doliner <mark@kingant.net>
parents: 7781
diff changeset
3042 return 1;
61b5d682ddb4 [gaim-migrate @ 8439]
Mark Doliner <mark@kingant.net>
parents: 7781
diff changeset
3043
61b5d682ddb4 [gaim-migrate @ 8439]
Mark Doliner <mark@kingant.net>
parents: 7781
diff changeset
3044 buf = g_strdup_printf(_("User information for %s unavailable:"), destn);
7781
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
3045
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
3046 gaim_notify_error(sess->aux_data, NULL, buf,
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
3047 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("No reason given."));
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
3048 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3049
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3050 return 1;
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
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
3053 #if 0
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3054 static char *images(int flags) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3055 static char buf[1024];
3101
8b0d58f74d3f [gaim-migrate @ 3115]
Sean Egan <seanegan@gmail.com>
parents: 3092
diff changeset
3056 g_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s",
2679
94aa499ecd39 [gaim-migrate @ 2692]
Adam Fritzler <mid@auk.cx>
parents: 2675
diff changeset
3057 (flags & AIM_FLAG_ACTIVEBUDDY) ? "<IMG SRC=\"ab_icon.gif\">" : "",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3058 (flags & AIM_FLAG_UNCONFIRMED) ? "<IMG SRC=\"dt_icon.gif\">" : "",
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3059 (flags & AIM_FLAG_AOL) ? "<IMG SRC=\"aol_icon.gif\">" : "",
3101
8b0d58f74d3f [gaim-migrate @ 3115]
Sean Egan <seanegan@gmail.com>
parents: 3092
diff changeset
3060 (flags & AIM_FLAG_ICQ) ? "<IMG SRC=\"icq_icon.gif\">" : "",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3061 (flags & AIM_FLAG_ADMINISTRATOR) ? "<IMG SRC=\"admin_icon.gif\">" : "",
3079
955f52bbcf8a [gaim-migrate @ 3093]
Sean Egan <seanegan@gmail.com>
parents: 3074
diff changeset
3062 (flags & AIM_FLAG_FREE) ? "<IMG SRC=\"free_icon.gif\">" : "",
955f52bbcf8a [gaim-migrate @ 3093]
Sean Egan <seanegan@gmail.com>
parents: 3074
diff changeset
3063 (flags & AIM_FLAG_WIRELESS) ? "<IMG SRC=\"wireless_icon.gif\">" : "");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3064 return buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3065 }
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
3066 #endif
3101
8b0d58f74d3f [gaim-migrate @ 3115]
Sean Egan <seanegan@gmail.com>
parents: 3092
diff changeset
3067
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3068 static char *caps_string(guint caps)
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3069 {
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3070 static char buf[512], *tmp;
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3071 int count = 0, i = 0;
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3072 guint bit = 1;
4742
636568ab1b4d [gaim-migrate @ 5057]
Mark Doliner <mark@kingant.net>
parents: 4741
diff changeset
3073
636568ab1b4d [gaim-migrate @ 5057]
Mark Doliner <mark@kingant.net>
parents: 4741
diff changeset
3074 if (!caps) {
4744
a0746ffce599 [gaim-migrate @ 5059]
Sean Egan <seanegan@gmail.com>
parents: 4743
diff changeset
3075 return NULL;
6318
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
3076 } else while (bit <= AIM_CAPS_LAST) {
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3077 if (bit & caps) {
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3078 switch (bit) {
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3079 case AIM_CAPS_BUDDYICON:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3080 tmp = _("Buddy Icon");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3081 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3082 case AIM_CAPS_VOICE:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3083 tmp = _("Voice");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3084 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3085 case AIM_CAPS_DIRECTIM:
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3086 tmp = _("AIM Direct IM");
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3087 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3088 case AIM_CAPS_CHAT:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3089 tmp = _("Chat");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3090 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3091 case AIM_CAPS_GETFILE:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3092 tmp = _("Get File");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3093 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3094 case AIM_CAPS_SENDFILE:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3095 tmp = _("Send File");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3096 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3097 case AIM_CAPS_GAMES:
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3098 case AIM_CAPS_GAMES2:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3099 tmp = _("Games");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3100 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3101 case AIM_CAPS_SAVESTOCKS:
4898
bd37db7531e4 [gaim-migrate @ 5230]
Mark Doliner <mark@kingant.net>
parents: 4889
diff changeset
3102 tmp = _("Add-Ins");
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3103 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3104 case AIM_CAPS_SENDBUDDYLIST:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3105 tmp = _("Send Buddy List");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3106 break;
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3107 case AIM_CAPS_ICQ_DIRECT:
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
3108 tmp = _("ICQ Direct Connect");
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3109 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3110 case AIM_CAPS_APINFO:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3111 tmp = _("AP User");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3112 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3113 case AIM_CAPS_ICQRTF:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3114 tmp = _("ICQ RTF");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3115 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3116 case AIM_CAPS_EMPTY:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3117 tmp = _("Nihilist");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3118 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3119 case AIM_CAPS_ICQSERVERRELAY:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3120 tmp = _("ICQ Server Relay");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3121 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3122 case AIM_CAPS_ICQUTF8OLD:
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3123 tmp = _("Old ICQ UTF8");
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3124 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3125 case AIM_CAPS_TRILLIANCRYPT:
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3126 tmp = _("Trillian Encryption");
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3127 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3128 case AIM_CAPS_ICQUTF8:
4742
636568ab1b4d [gaim-migrate @ 5057]
Mark Doliner <mark@kingant.net>
parents: 4741
diff changeset
3129 tmp = _("ICQ UTF8");
636568ab1b4d [gaim-migrate @ 5057]
Mark Doliner <mark@kingant.net>
parents: 4741
diff changeset
3130 break;
6318
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
3131 case AIM_CAPS_HIPTOP:
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
3132 tmp = _("Hiptop");
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
3133 break;
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3134 case AIM_CAPS_SECUREIM:
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3135 tmp = _("Security Enabled");
6871
714fc8f45cf2 [gaim-migrate @ 7417]
Mark Doliner <mark@kingant.net>
parents: 6857
diff changeset
3136 break;
7582
3e0404393761 [gaim-migrate @ 8200]
Mark Doliner <mark@kingant.net>
parents: 7505
diff changeset
3137 case AIM_CAPS_VIDEO:
3e0404393761 [gaim-migrate @ 8200]
Mark Doliner <mark@kingant.net>
parents: 7505
diff changeset
3138 tmp = _("Video Chat");
3e0404393761 [gaim-migrate @ 8200]
Mark Doliner <mark@kingant.net>
parents: 7505
diff changeset
3139 break;
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3140 default:
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3141 tmp = NULL;
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3142 break;
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3143 }
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3144 if (tmp)
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3145 i += g_snprintf(buf + i, sizeof(buf) - i, "%s%s", (count ? ", " : ""),
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3146 tmp);
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3147 count++;
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3148 }
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3149 bit <<= 1;
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3150 }
4744
a0746ffce599 [gaim-migrate @ 5059]
Sean Egan <seanegan@gmail.com>
parents: 4743
diff changeset
3151 return buf;
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3152 }
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3153
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3154 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
3155 GaimConnection *gc = sess->aux_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3156 GString *text;
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
3157 gchar *info_utf8 = NULL, *away_utf8 = NULL;
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
3158 const char *final = NULL;
4791
e737e3e08b4a [gaim-migrate @ 5111]
Mark Doliner <mark@kingant.net>
parents: 4790
diff changeset
3159 va_list ap;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3160 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3161
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3162 va_start(ap, fr);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3163 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3164 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3165
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3166 text = g_string_new("");
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3167 g_string_append_printf(text, _("Username: <b>%s</b><br>\n"), userinfo->sn);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3168 g_string_append_printf(text, _("Warning Level: <b>%d%%</b><br>\n"), (int)((userinfo->warnlevel/10.0) + 0.5));
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3169
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3170 if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE)
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3171 g_string_append_printf(text, _("Online Since: <b>%s</b><br>\n"),
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3172 asctime(localtime((time_t *)&userinfo->onlinesince)));
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3173
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3174 if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE)
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3175 g_string_append_printf(text, _("Member Since: <b>%s</b><br>\n"),
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3176 asctime(localtime((time_t *)&userinfo->membersince)));
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3177
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3178 if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3179 gchar *itime = gaim_str_seconds_to_string(userinfo->idletime*60);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3180 g_string_append_printf(text, _("Idle: <b>%s</b>"), itime);
4426
3299863ab060 [gaim-migrate @ 4701]
Mark Doliner <mark@kingant.net>
parents: 4423
diff changeset
3181 g_free(itime);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3182 } else
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3183 g_string_append_printf(text, _("Idle: <b>Active</b>"));
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3184
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3185 if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3186 away_utf8 = oscar_encoding_to_utf8(userinfo->away_encoding, userinfo->away, userinfo->away_len);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3187 if (away_utf8 != NULL) {
7129
8246bd3141ae [gaim-migrate @ 7696]
Luke Schierer <lschiere@pidgin.im>
parents: 7125
diff changeset
3188 g_string_append_printf(text, "<hr>%s", away_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3189 g_free(away_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
3190 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3191 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3192
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3193 if ((userinfo->info_len > 0) && (userinfo->info != NULL) && (userinfo->info_encoding != NULL)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3194 info_utf8 = oscar_encoding_to_utf8(userinfo->info_encoding, userinfo->info, userinfo->info_len);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3195 if (info_utf8 != NULL) {
7129
8246bd3141ae [gaim-migrate @ 7696]
Luke Schierer <lschiere@pidgin.im>
parents: 7125
diff changeset
3196 g_string_append_printf(text, "<hr>%s", info_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3197 g_free(info_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
3198 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3199 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3200
7164
7fadcbdcac29 [gaim-migrate @ 7731]
Mark Doliner <mark@kingant.net>
parents: 7162
diff changeset
3201 final = gaim_str_sub_away_formatters(text->str, gaim_account_get_username(gaim_connection_get_account(gc)));
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3202 g_string_free(text, TRUE);
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
3203 gaim_notify_formatted(gc, NULL, _("Buddy Information"), NULL, final, NULL, NULL);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3204
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3205 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3206 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3207
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3208 static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3209 char *msg;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3210 fu16_t id;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3211 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3212
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3213 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3214 id = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3215 msg = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3216 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3217
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3218 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3219 "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
59b0377d18aa [gaim-migrate @ 2102]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
3220 if (id < 4)
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3221 gaim_notify_warning(sess->aux_data, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3222 _("Your AIM connection may be lost."), NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3223
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3224 return 1;
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
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3227 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
3228 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3229 fu16_t type;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3230 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3231 OscarData *od = (OscarData *)gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3232
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3233 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3234 type = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3235
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3236 switch(type) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3237 case 0x0002: {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3238 fu8_t maxrooms;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3239 struct aim_chat_exchangeinfo *exchanges;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3240 int exchangecount, i;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3241
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3242 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3243 exchangecount = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3244 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3245
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3246 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3247 "chat info: Chat Rights:\n");
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3248 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3249 "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3250 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3251 "chat info: \tExchange List: (%d total)\n", exchangecount);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3252 for (i = 0; i < exchangecount; i++)
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3253 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3254 "chat info: \t\t%hu %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3255 exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3256 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3257 struct create_room *cr = od->create_rooms->data;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3258 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3259 "creating room %s\n", cr->name);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
3260 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
3261 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3262 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
3263 g_free(cr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3264 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3265 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3266 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3267 case 0x0008: {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3268 char *fqcn, *name, *ck;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3269 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3270 fu8_t createperms;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3271 fu32_t createtime;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3272
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3273 fqcn = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3274 instance = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3275 exchange = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3276 flags = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3277 createtime = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3278 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3279 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3280 createperms = (fu8_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3281 unknown = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3282 name = va_arg(ap, char *);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3283 ck = va_arg(ap, char *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3284
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3285 gaim_debug(GAIM_DEBUG_MISC, "oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3286 "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
3287 fqcn,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3288 exchange, instance, flags,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3289 createtime,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3290 maxmsglen, maxoccupancy, createperms, unknown,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3291 name, ck);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3292 aim_chat_join(od->sess, od->conn, exchange, ck, instance);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3293 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3294 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3295 default:
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3296 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3297 "chatnav info: unknown type (%04hx)\n", type);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3298 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3299 }
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3300
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3301 va_end(ap);
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3302
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3303 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3304 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3305
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3306 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
3307 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3308 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3309 aim_userinfo_t *info;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3310 GaimConnection *g = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3311
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3312 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3313
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3314 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3315 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3316 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3317 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3318
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3319 c = find_oscar_chat_by_conn(g, fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3320 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3321 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3322
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3323 for (i = 0; i < count; i++)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3324 gaim_conv_chat_add_user(GAIM_CONV_CHAT(c->cnv), info[i].sn, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3325
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3326 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3327 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3328
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3329 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
3330 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3331 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3332 aim_userinfo_t *info;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3333 GaimConnection *g = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3334
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3335 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3336
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3337 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3338 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3339 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3340 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3341
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3342 c = find_oscar_chat_by_conn(g, fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3343 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3344 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3345
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3346 for (i = 0; i < count; i++)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3347 gaim_conv_chat_remove_user(GAIM_CONV_CHAT(c->cnv), info[i].sn, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3348
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3349 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3350 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3351
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3352 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
3353 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3354 aim_userinfo_t *userinfo;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3355 struct aim_chat_roominfo *roominfo;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3356 char *roomname;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3357 int usercount;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3358 char *roomdesc;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3359 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3360 fu32_t creationtime;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3361 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3362 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
3363
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3364 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3365 roominfo = va_arg(ap, struct aim_chat_roominfo *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3366 roomname = va_arg(ap, char *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3367 usercount= va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3368 userinfo = va_arg(ap, aim_userinfo_t *);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3369 roomdesc = va_arg(ap, char *);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3370 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3371 creationtime = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3372 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3373 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3374 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3375 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3376 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3377
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3378 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3379 "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3380 maxmsglen, maxvisiblemsglen);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3381
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3382 ccon->maxlen = maxmsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3383 ccon->maxvis = maxvisiblemsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3384
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3385 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3386 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3387
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3388 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
3389 GaimConnection *gc = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3390 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3391 aim_userinfo_t *info;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3392 char *msg;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3393 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3394
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3395 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3396 info = va_arg(ap, aim_userinfo_t *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3397 msg = va_arg(ap, char *);
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3398 va_end(ap);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3399
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
3400 serv_got_chat_in(gc, ccon->id, info->sn, 0, msg, time((time_t)NULL));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3401
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3402 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3403 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3404
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3405 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
3406 va_list ap;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3407 GaimConnection *gc = sess->aux_data;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3408 struct aim_emailinfo *emailinfo;
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
3409 int havenewmail;
7297
ceda503e55a6 [gaim-migrate @ 7881]
Sean Egan <seanegan@gmail.com>
parents: 7285
diff changeset
3410 char *alertitle, *alerturl;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3411
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3412 va_start(ap, fr);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3413 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
3414 havenewmail = va_arg(ap, int);
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
3415 alertitle = va_arg(ap, char *);
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
3416 alerturl = va_arg(ap, char *);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3417 va_end(ap);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3418
5628
9a34e950792e [gaim-migrate @ 6035]
Mark Doliner <mark@kingant.net>
parents: 5591
diff changeset
3419 if (emailinfo && gaim_account_get_check_mail(gc->account)) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3420 gchar *to = g_strdup_printf("%s@%s", gaim_account_get_username(gaim_connection_get_account(gc)), emailinfo->domain);
5542
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
3421 if (emailinfo->unread && havenewmail)
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
3422 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
3423 g_free(to);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3424 }
7297
ceda503e55a6 [gaim-migrate @ 7881]
Sean Egan <seanegan@gmail.com>
parents: 7285
diff changeset
3425
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
3426 if (alertitle)
7313
be7c1468c6a7 [gaim-migrate @ 7897]
Mark Doliner <mark@kingant.net>
parents: 7301
diff changeset
3427 gaim_debug(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
3428
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3429 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3430 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3431
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3432 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
3433 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3434 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3435 char *sn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3436
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3437 sn = od->requesticon->data;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3438 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3439 "removing %s from hash table\n", sn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3440 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3441 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3442
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3443 if (od->icontimer)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3444 g_source_remove(od->icontimer);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3445 od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3446
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3447 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3448 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3449
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3450 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
3451 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3452 OscarData *od = gc->proto_data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3453 GSList *cur;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3454 va_list ap;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3455 char *sn;
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3456 fu8_t *iconcsum, *icon;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3457 fu16_t iconcsumlen, iconlen;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3458
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3459 va_start(ap, fr);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3460 sn = va_arg(ap, char *);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3461 iconcsum = va_arg(ap, fu8_t *);
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3462 iconcsumlen = va_arg(ap, int);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3463 icon = va_arg(ap, fu8_t *);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3464 iconlen = va_arg(ap, int);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3465 va_end(ap);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3466
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3467 if (iconlen > 0) {
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3468 char *b16;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3469 GaimBuddy *b = gaim_find_buddy(gc->account, sn);
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3470 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3471 sn, icon, iconlen);
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
3472 b16 = gaim_base16_encode(iconcsum, iconcsumlen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
3473 if (b16) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3474 gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
3475 gaim_blist_save();
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
3476 g_free(b16);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
3477 }
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3478 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3479
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3480 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3481 while (cur) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3482 char *cursn = cur->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3483 if (!aim_sncmp(cursn, sn)) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3484 od->requesticon = g_slist_remove(od->requesticon, cursn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3485 free(cursn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3486 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3487 } else
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3488 cur = cur->next;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3489 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3490
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3491 if (od->icontimer)
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3492 g_source_remove(od->icontimer);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3493 od->icontimer = g_timeout_add(250, gaim_icon_timerfunc, gc);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3494
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3495 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3496 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3497
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3498 static gboolean gaim_icon_timerfunc(gpointer data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3499 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3500 OscarData *od = gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3501 aim_userinfo_t *userinfo;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3502 aim_conn_t *conn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3503
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3504 conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3505 if (!conn) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3506 if (!od->iconconnecting) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3507 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3508 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3509 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3510 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3511 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3512
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3513 if (od->set_icon) {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3514 struct stat st;
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3515 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3516 if (iconfile == NULL) {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3517 /* Set an empty icon, or something */
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3518 } else if (!stat(iconfile, &st)) {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3519 char *buf = g_malloc(st.st_size);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3520 FILE *file = fopen(iconfile, "rb");
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3521 if (file) {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3522 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3523 fclose(file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3524 gaim_debug(GAIM_DEBUG_INFO, "oscar",
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3525 "Uploading icon to icon server\n");
6879
594682101ba6 [gaim-migrate @ 7425]
Mark Doliner <mark@kingant.net>
parents: 6873
diff changeset
3526 aim_bart_upload(od->sess, buf, st.st_size);
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3527 } else
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3528 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3529 "Can't open buddy icon file!\n");
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3530 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3531 } else {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3532 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3533 "Can't stat buddy icon file!\n");
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3534 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3535 od->set_icon = FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3536 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3537
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3538 if (!od->requesticon) {
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3539 gaim_debug(GAIM_DEBUG_MISC, "oscar",
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3540 "no more icons to request\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3541 return FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3542 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3543
7045
237ad253dd34 [gaim-migrate @ 7608]
Mark Doliner <mark@kingant.net>
parents: 7038
diff changeset
3544 userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3545 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3546 aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsum, userinfo->iconcsumlen);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3547 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3548 } else {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3549 char *sn = od->requesticon->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3550 od->requesticon = g_slist_remove(od->requesticon, sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3551 free(sn);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3552 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3553
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3554 return TRUE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3555 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3556
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3557 /*
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3558 * 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
3559 */
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3560 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
3561 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3562 fu16_t type;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3563 char *sn;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3564
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3565 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3566 type = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3567 sn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3568 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3569
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3570 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Sent message to %s.\n", sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3571
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3572 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3573 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3574
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3575 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
3576 static const char *codes[5] = {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3577 "invalid",
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3578 "change",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3579 "warning",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3580 "limit",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3581 "limit cleared",
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3582 };
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3583 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3584 fu16_t code, rateclass;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3585 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3586
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3587 va_start(ap, fr);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3588 code = (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3589 rateclass= (fu16_t)va_arg(ap, unsigned int);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3590 windowsize = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3591 clear = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3592 alert = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3593 limit = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3594 disconnect = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3595 currentavg = va_arg(ap, fu32_t);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3596 maxavg = va_arg(ap, fu32_t);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3597 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3598
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3599 gaim_debug(GAIM_DEBUG_MISC, "oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3600 "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
3601 "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
3602 (code < 5) ? codes[code] : codes[0],
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3603 rateclass,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3604 currentavg, maxavg,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3605 alert, clear,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3606 limit, disconnect,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3607 windowsize);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3608
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3609 /* XXX fix these values */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3610 if (code == AIM_RATE_CODE_CHANGE) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3611 if (currentavg >= clear)
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3612 aim_conn_setlatency(fr->conn, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3613 } else if (code == AIM_RATE_CODE_WARNING) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3614 aim_conn_setlatency(fr->conn, windowsize/4);
2909
48ec70928d7f [gaim-migrate @ 2922]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2906
diff changeset
3615 } else if (code == AIM_RATE_CODE_LIMIT) {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3616 gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."),
6040
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
3617 _("The last action you attempted could not be "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
3618 "performed because you are over the rate limit. "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
3619 "Please wait 10 seconds and try again."));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3620 aim_conn_setlatency(fr->conn, windowsize/2);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3621 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3622 aim_conn_setlatency(fr->conn, 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
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3625 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3626 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3627
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3628 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
3629 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3630 fu16_t newevil;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3631 aim_userinfo_t *userinfo;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3632 GaimConnection *gc = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3633
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3634 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3635 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3636 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3637 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3638
7111
b9664e6257b5 [gaim-migrate @ 7678]
Mark Doliner <mark@kingant.net>
parents: 7108
diff changeset
3639 serv_got_eviled(gc, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3640
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3641 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3642 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3643
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3644 static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) {
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3645 va_list ap;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3646 aim_userinfo_t *info;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3647 GaimConnection *gc = sess->aux_data;
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3648
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3649 va_start(ap, fr);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3650 info = va_arg(ap, aim_userinfo_t *);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3651 va_end(ap);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3652
5628
9a34e950792e [gaim-migrate @ 6035]
Mark Doliner <mark@kingant.net>
parents: 5591
diff changeset
3653 gc->evil = (info->warnlevel/10.0) + 0.5;
4841
7bdda84b5431 [gaim-migrate @ 5166]
Mark Doliner <mark@kingant.net>
parents: 4838
diff changeset
3654
7bdda84b5431 [gaim-migrate @ 5166]
Mark Doliner <mark@kingant.net>
parents: 4838
diff changeset
3655 if (info->onlinesince)
7bdda84b5431 [gaim-migrate @ 5166]
Mark Doliner <mark@kingant.net>
parents: 4838
diff changeset
3656 gc->login_time_official = info->onlinesince;
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3657
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3658 return 1;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3659 }
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3660
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3661 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
3662 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3663 OscarData *od = gc->proto_data;
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3664 va_list ap;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3665 fu16_t code;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3666 char *msg;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3667
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3668 va_start(ap, fr);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3669 code = (fu16_t)va_arg(ap, int);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3670 msg = va_arg(ap, char *);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3671 va_end(ap);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3672
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3673 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3674 "Disconnected. Code is 0x%04x and msg is %s\n", code, msg);
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3675 if ((fr) && (fr->conn) && (fr->conn->type == AIM_CONN_TYPE_BOS)) {
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
3676 if (code == 0x0001) {
6113
30d4c432101c [gaim-migrate @ 6575]
Mark Doliner <mark@kingant.net>
parents: 6066
diff changeset
3677 gc->wants_to_die = TRUE;
5579
e0146fcc4718 [gaim-migrate @ 5983]
Sean Egan <seanegan@gmail.com>
parents: 5577
diff changeset
3678 gaim_connection_error(gc, _("You have been disconnected because you have signed on with this screen name at another location."));
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
3679 } else {
5579
e0146fcc4718 [gaim-migrate @ 5983]
Sean Egan <seanegan@gmail.com>
parents: 5577
diff changeset
3680 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
3681 }
4666
f8895ad921ee [gaim-migrate @ 4977]
Mark Doliner <mark@kingant.net>
parents: 4665
diff changeset
3682 od->killme = TRUE;
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3683 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3684
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3685 return 1;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3686 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3687
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3688 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
3689 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3690
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
3691 aim_reqpersonalinfo(sess, fr->conn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3692
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3693 #ifndef NOSSI
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3694 gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: requesting rights and list\n");
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
3695 aim_ssi_reqrights(sess);
6350
34c07f5f34a0 [gaim-migrate @ 6849]
Mark Doliner <mark@kingant.net>
parents: 6318
diff changeset
3696 aim_ssi_reqdata(sess);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3697 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3698
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3699 aim_locate_reqrights(sess);
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
3700 aim_buddylist_reqrights(sess, fr->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3701 aim_im_reqparams(sess);
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3702 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
3703
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3704 #ifdef NOSSI
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3705 gaim_debug(GAIM_DEBUG_INFO, "oscar", "bos: requesting rights\n");
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3706 aim_bos_reqrights(sess, fr->conn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3707 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3708 aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE | AIM_PRIVFLAGS_ALLOWMEMBERSINCE);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
3709 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3710
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3711 gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS);
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3712
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3713 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3714 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3715
2675
e759254b29bb [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3716 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
3717 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3718 OscarData *od = gc->proto_data;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3719
6905
90cfd31c506f [gaim-migrate @ 7452]
Mark Doliner <mark@kingant.net>
parents: 6879
diff changeset
3720 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
3721 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
3722 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
3723
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3724 aim_clientready(sess, fr->conn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3725 gaim_debug(GAIM_DEBUG_INFO, "oscar", "connected to admin\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3726
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3727 if (od->chpass) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3728 gaim_debug(GAIM_DEBUG_INFO, "oscar", "changing password\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
3729 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3730 g_free(od->oldp);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3731 od->oldp = NULL;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3732 g_free(od->newp);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3733 od->newp = NULL;
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3734 od->chpass = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3735 }
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3736 if (od->setnick) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3737 gaim_debug(GAIM_DEBUG_INFO, "oscar", "formatting screenname\n");
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3738 aim_admin_setnick(sess, fr->conn, od->newsn);
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3739 g_free(od->newsn);
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3740 od->newsn = NULL;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3741 od->setnick = FALSE;
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3742 }
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3743 if (od->conf) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3744 gaim_debug(GAIM_DEBUG_INFO, "oscar", "confirming account\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
3745 aim_admin_reqconfirm(sess, fr->conn);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3746 od->conf = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3747 }
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3748 if (od->reqemail) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3749 gaim_debug(GAIM_DEBUG_INFO, "oscar", "requesting email\n");
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
3750 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3751 od->reqemail = FALSE;
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3752 }
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3753 if (od->setemail) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3754 gaim_debug(GAIM_DEBUG_INFO, "oscar", "setting email\n");
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3755 aim_admin_setemail(sess, fr->conn, od->email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3756 g_free(od->email);
5497
3c7748b24410 [gaim-migrate @ 5893]
Mark Doliner <mark@kingant.net>
parents: 5493
diff changeset
3757 od->email = NULL;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3758 od->setemail = FALSE;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3759 }
2647
6781ee2b9db0 [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3760
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3761 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3762 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3763
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3764 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
3765 struct aim_icbmparameters *params;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3766 va_list ap;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3767
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3768 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3769 params = va_arg(ap, struct aim_icbmparameters *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3770 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3771
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3772 /* XXX - evidently this crashes on solaris. i have no clue why
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3773 gaim_debug(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
3774 "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
3775 params->maxchan, params->flags, params->maxmsglen,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3776 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3777 params->minmsginterval);
2427
5bc3b39fc0a5 [gaim-migrate @ 2440]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2421
diff changeset
3778 */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3779
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3780 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3781 params->flags = 0x0000000b;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3782 params->maxmsglen = 8000;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3783 params->minmsginterval = 0;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3784
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3785 aim_im_setparams(sess, params);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3786
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3787 return 1;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3788 }
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3789
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3790 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
3791 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3792 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3793 OscarData *od = (OscarData *)gc->proto_data;
5306
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
3794 va_list ap;
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
3795 fu16_t maxsiglen;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3796
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3797 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3798 maxsiglen = (fu16_t) va_arg(ap, int);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3799 va_end(ap);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3800
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3801 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3802 "locate rights: max sig len = %d\n", maxsiglen);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3803
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3804 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3805
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3806 if (od->icq)
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3807 aim_locate_setcaps(od->sess, caps_icq);
5301
d846a933299c [gaim-migrate @ 5673]
Mark Doliner <mark@kingant.net>
parents: 5300
diff changeset
3808 else
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3809 aim_locate_setcaps(od->sess, caps_aim);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3810 oscar_set_info(gc, gc->account->user_info);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3811
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3812 return 1;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3813 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3814
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3815 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
3816 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3817 fu16_t maxbuddies, maxwatchers;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3818 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3819 OscarData *od = (OscarData *)gc->proto_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3820
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3821 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3822 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3823 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3824 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3825
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3826 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3827 "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
3828
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3829 od->rights.maxbuddies = (guint)maxbuddies;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3830 od->rights.maxwatchers = (guint)maxwatchers;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3831
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3832 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3833 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3834
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3835 static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3836 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3837 OscarData *od = (OscarData *)gc->proto_data;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3838 va_list ap;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3839 fu16_t maxpermits, maxdenies;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3840
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3841 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3842 maxpermits = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3843 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3844 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3845
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3846 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3847 "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3848
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3849 od->rights.maxpermits = (guint)maxpermits;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3850 od->rights.maxdenies = (guint)maxdenies;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3851
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
3852 gaim_connection_set_state(gc, GAIM_CONNECTED);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3853 serv_finish_login(gc);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3854
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3855 gaim_debug(GAIM_DEBUG_INFO, "oscar", "buddy list loaded\n");
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3856
2672
c41030cfed76 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3857 aim_clientready(sess, fr->conn);
5948
1bebb8345bde [gaim-migrate @ 6392]
Mark Doliner <mark@kingant.net>
parents: 5920
diff changeset
3858 aim_srv_setavailmsg(sess, NULL);
7474
2bdacd38528c [gaim-migrate @ 8087]
Mark Doliner <mark@kingant.net>
parents: 7465
diff changeset
3859 aim_srv_setidle(sess, 0);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3860
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3861 if (od->icq) {
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3862 aim_icq_reqofflinemsgs(sess);
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3863 aim_icq_hideip(sess);
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3864 }
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3865
2703
441b84ab7f4e [gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2698
diff changeset
3866 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
c5ce82228a2f [gaim-migrate @ 4317]
Mark Doliner <mark@kingant.net>
parents: 4076
diff changeset
3867 if (sess->authinfo->email)
c5ce82228a2f [gaim-migrate @ 4317]
Mark Doliner <mark@kingant.net>
parents: 4076
diff changeset
3868 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3869
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3870 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3871 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3872
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3873 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
3874 va_list ap;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3875 struct aim_icq_offlinemsg *msg;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3876 struct aim_incomingim_ch4_args args;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3877 time_t t;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3878
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3879 va_start(ap, fr);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3880 msg = va_arg(ap, struct aim_icq_offlinemsg *);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3881 va_end(ap);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3882
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3883 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3884 "Received offline message. Converting to channel 4 ICBM...\n");
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3885 args.uin = msg->sender;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3886 args.type = msg->type;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3887 args.flags = msg->flags;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3888 args.msglen = msg->msglen;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3889 args.msg = msg->msg;
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3890 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
3891 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3892
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3893 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3894 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3895
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3896 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
3897 {
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3898 aim_icq_ackofflinemsgs(sess);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3899 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3900 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3901
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3902 #if 0
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3903 /*
7465
dedbfdc7ce65 [gaim-migrate @ 8078]
Mark Doliner <mark@kingant.net>
parents: 7422
diff changeset
3904 * Update, 2003-11-09:
dedbfdc7ce65 [gaim-migrate @ 8078]
Mark Doliner <mark@kingant.net>
parents: 7422
diff changeset
3905 * 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
3906 *
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3907 * It may not be my place to do this, but...
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3908 * 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
3909 * 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
3910 * 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
3911 * 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
3912 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3913 * 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
3914 * 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
3915 * what the locale wanted.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3916 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3917 * 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
3918 * 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
3919 * year.
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3920 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3921 * 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
3922 * (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
3923 *
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3924 * 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
3925 * 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
3926 *
22ed0a0c003d [gaim-migrate @ 7984]
Mark Doliner <mark@kingant.net>
parents: 7388
diff changeset
3927 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3190
22ed0a0c003d [gaim-migrate @ 7984]
Mark Doliner <mark@kingant.net>
parents: 7388
diff changeset
3928 * 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
3929 */
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3930
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3931 /*
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3932 * 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
3933 * "last 2 digits" warning.
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
3934 */
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
3935 static size_t my_strftime(char *s, size_t max, const char *fmt,
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
3936 const struct tm *tm)
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
3937 {
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
3938 return strftime(s, max, fmt, tm);
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
3939 }
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3940 #endif
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
3941
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3942 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
3943 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3944 GaimConnection *gc = sess->aux_data;
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
3945 gchar *buf, *tmp, *utf8;
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3946 gchar who[16];
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3947 GaimBuddy *buddy;
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3948 gchar *primary;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3949 va_list ap;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3950 struct aim_icq_info *info;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3951
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3952 va_start(ap, fr);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3953 info = va_arg(ap, struct aim_icq_info *);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3954 va_end(ap);
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3955
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3956 if (!info->uin)
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3957 return 0;
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3958
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3959 g_snprintf(who, sizeof(who), "%u", info->uin);
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3960 buf = g_strdup_printf("<b>%s:</b> %s", _("UIN"), who);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3961 if (info->nick && info->nick[0] && (utf8 = gaim_utf8_try_convert(info->nick))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3962 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Nick"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
3963 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3964 if (info->first && info->first[0] && (utf8 = gaim_utf8_try_convert(info->first))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3965 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("First Name"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
3966 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3967 if (info->last && info->last[0] && (utf8 = gaim_utf8_try_convert(info->last))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3968 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Last Name"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
3969 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3970 if (info->email && info->email[0] && (utf8 = gaim_utf8_try_convert(info->email))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3971 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Email Address"), ":</b> <a href=\"mailto:", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8);
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3972 }
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3973 if (info->numaddresses && info->email2) {
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3974 int i;
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3975 for (i = 0; i < info->numaddresses; i++) {
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3976 if (info->email2[i] && info->email2[i][0] && (utf8 = gaim_utf8_try_convert(info->email2[i]))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3977 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Email Address"), ":</b> <a href=\"mailto:", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8);
4643
2b37c498b4bd [gaim-migrate @ 4953]
Nathan Walp <nwalp@pidgin.im>
parents: 4642
diff changeset
3978 }
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3979 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3980 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3981 if (info->mobile && info->mobile[0] && (utf8 = gaim_utf8_try_convert(info->mobile))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3982 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Mobile Phone"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3983 }
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3984 if (info->gender) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3985 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Gender"), ":</b> ", info->gender==1 ? _("Female") : _("Male"), NULL); g_free(tmp);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3986 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3987 if (info->birthyear || info->birthmonth || info->birthday) {
4627
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
3988 char date[30];
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
3989 struct tm tm;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
3990 tm.tm_mday = (int)info->birthday;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
3991 tm.tm_mon = (int)info->birthmonth-1;
bcfda01c707a [gaim-migrate @ 4918]
Mark Doliner <mark@kingant.net>
parents: 4625
diff changeset
3992 tm.tm_year = (int)info->birthyear-1900;
7388
37384bd2f1b0 [gaim-migrate @ 7983]
Mark Doliner <mark@kingant.net>
parents: 7386
diff changeset
3993 strftime(date, sizeof(date), "%x", &tm);
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3994 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Birthday"), ":</b> ", date, NULL); g_free(tmp);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3995 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3996 if (info->age) {
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3997 char age[5];
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3998 snprintf(age, sizeof(age), "%hhd", info->age);
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
3999 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Age"), ":</b> ", age, NULL); g_free(tmp);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
4000 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4001 if (info->personalwebpage && info->personalwebpage[0] && (utf8 = gaim_utf8_try_convert(info->personalwebpage))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4002 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Personal Web Page"), ":</b> <a href=\"", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
4003 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4004 if (info->info && info->info[0] && (utf8 = gaim_utf8_try_convert(info->info))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4005 tmp = buf; buf = g_strconcat(tmp, "<hr><b>", _("Additional Information"), ":</b><br>", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4006 }
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4007 tmp = buf; buf = g_strconcat(tmp, "<hr>\n", NULL); g_free(tmp);
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
4008 if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4009 tmp = buf; buf = g_strconcat(tmp, "<b>", _("Home Address"), ":</b>", NULL); g_free(tmp);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4010 if (info->homeaddr && info->homeaddr[0] && (utf8 = gaim_utf8_try_convert(info->homeaddr))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4011 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Address"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4012 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4013 if (info->homecity && info->homecity[0] && (utf8 = gaim_utf8_try_convert(info->homecity))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4014 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("City"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4015 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4016 if (info->homestate && info->homestate[0] && (utf8 = gaim_utf8_try_convert(info->homestate))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4017 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("State"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4018 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4019 if (info->homezip && info->homezip[0] && (utf8 = gaim_utf8_try_convert(info->homezip))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4020 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Zip Code"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4021 }
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4022 tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4023 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
4024 if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4025 tmp = buf; buf = g_strconcat(tmp, "<b>", _("Work Address"), ":</b>", NULL); g_free(tmp);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4026 if (info->workaddr && info->workaddr[0] && (utf8 = gaim_utf8_try_convert(info->workaddr))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4027 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Address"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4028 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4029 if (info->workcity && info->workcity[0] && (utf8 = gaim_utf8_try_convert(info->workcity))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4030 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("City"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4031 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4032 if (info->workstate && info->workstate[0] && (utf8 = gaim_utf8_try_convert(info->workstate))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4033 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("State"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4034 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4035 if (info->workzip && info->workzip[0] && (utf8 = gaim_utf8_try_convert(info->workzip))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4036 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Zip Code"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4037 }
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4038 tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp);
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4039 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
4040 if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4041 tmp = buf; buf = g_strconcat(tmp, "<b>", _("Work Information"), ":</b>", NULL); g_free(tmp);
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4042 if (info->workcompany && info->workcompany[0] && (utf8 = gaim_utf8_try_convert(info->workcompany))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4043 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Company"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4044 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4045 if (info->workdivision && info->workdivision[0] && (utf8 = gaim_utf8_try_convert(info->workdivision))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4046 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Division"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4047 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4048 if (info->workposition && info->workposition[0] && (utf8 = gaim_utf8_try_convert(info->workposition))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4049 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Position"), ":</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4050 }
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4051 if (info->workwebpage && info->workwebpage[0] && (utf8 = gaim_utf8_try_convert(info->workwebpage))) {
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
4052 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Web Page"), ":</b> <a href=\"", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4053 }
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4054 tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4055 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4056
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4057 buddy = gaim_find_buddy(gaim_connection_get_account(gc), who);
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4058 primary = g_strdup_printf(_("ICQ Info for %s"), gaim_get_buddy_alias(buddy));
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4059 gaim_notify_formatted(gc, NULL, primary, NULL, buf, NULL, NULL);
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4060 g_free(primary);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4061 g_free(buf);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
4062
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
4063 return 1;
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
4064 }
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
4065
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4066 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
4067 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4068 GaimConnection *gc = sess->aux_data;
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
4069 gchar who[16], *utf8;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4070 GaimBuddy *b;
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4071 va_list ap;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4072 struct aim_icq_info *info;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4073
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4074 va_start(ap, fr);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4075 info = va_arg(ap, struct aim_icq_info *);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4076 va_end(ap);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4077
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4078 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
4079 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
4080 serv_got_alias(gc, who, utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4081 if ((b = gaim_find_buddy(gc->account, who))) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
4082 gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4083 gaim_blist_save();
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4084 }
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
4085 g_free(utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4086 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4087
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4088 return 1;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4089 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4090
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4091 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
4092 {
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
4093 GaimConnection *gc = sess->aux_data;
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
4094 gchar *text;
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
4095 va_list ap;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4096 char *msg, *url;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4097 fu16_t wid, hei, delay;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4098
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4099 va_start(ap, fr);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4100 msg = va_arg(ap, char *);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4101 url = va_arg(ap, char *);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4102 wid = (fu16_t) va_arg(ap, int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4103 hei = (fu16_t) va_arg(ap, int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4104 delay = (fu16_t) va_arg(ap, int);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4105 va_end(ap);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4106
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
4107 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
4108 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
4109 g_free(text);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4110
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4111 return 1;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4112 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
4113
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
4114 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
4115 {
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4116 GaimConnection *gc = sess->aux_data;
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4117 gchar *secondary;
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4118 GString *text;
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4119 int i, num;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4120 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4121 char *email, *SNs;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4122
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4123 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4124 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4125 num = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4126 SNs = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4127 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4128
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4129 secondary = g_strdup_printf(_("The following screennames are associated with %s"), email);
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4130 text = g_string_new("");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4131 for (i = 0; i < num; i++)
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4132 g_string_append_printf(text, "%s<br>", &SNs[i * (MAXSNLEN + 1)]);
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4133 gaim_notify_formatted(gc, NULL, _("Search Results"), secondary, text->str, NULL, NULL);
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4134
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4135 g_free(secondary);
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4136 g_string_free(text, TRUE);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4137
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4138 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4139 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4140
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4141 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
4142 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4143 char *email;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4144 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4145
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4146 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4147 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4148 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4149
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
4150 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
4151 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
4152 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4153
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4154 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4155 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4156
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4157 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
4158 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4159 fu16_t status;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4160 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4161 char msg[256];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4162
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4163 va_start(ap, fr);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4164 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
4165 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4166
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4167 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4168 "account confirmation returned status 0x%04x (%s)\n", status,
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4169 status ? "unknown" : "email sent");
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4170 if (!status) {
5302
6dfcd7dbecde [gaim-migrate @ 5674]
Luke Schierer <lschiere@pidgin.im>
parents: 5301
diff changeset
4171 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
4172 gaim_account_get_username(gaim_connection_get_account(gc)));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4173 gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4174 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4175
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4176 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4177 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4178
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4179 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
4180 GaimConnection *gc = sess->aux_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4181 va_list ap;
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4182 fu16_t perms, err;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4183 char *url, *sn, *email;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4184 int change;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4185
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4186 va_start(ap, fr);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
4187 change = va_arg(ap, int);
4199
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4188 perms = (fu16_t) va_arg(ap, unsigned int);
97de60e7b7ba [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4189 err = (fu16_t) va_arg(ap, unsigned int);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4190 url = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4191 sn = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4192 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4193 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4194
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4195 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4196 "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4197 change ? "change" : "request", perms, err, url, sn, email);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4198
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4199 if (err && url) {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4200 char *dialog_msg;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4201 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4202 switch (err) {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4203 case 0x0001: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4204 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
4205 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4206 case 0x0006: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4207 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name ends in a space."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4208 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4209 case 0x000b: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4210 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
4211 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4212 case 0x001d: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4213 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
4214 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4215 case 0x0021: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4216 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
4217 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4218 case 0x0023: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4219 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
4220 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4221 default: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4222 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4223 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4224 }
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4225 gaim_notify_error(gc, NULL, dialog_top, dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4226 g_free(dialog_top);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4227 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4228 return 1;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4229 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4230
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4231 if (sn) {
4585
2427d847e39c [gaim-migrate @ 4869]
Luke Schierer <lschiere@pidgin.im>
parents: 4508
diff changeset
4232 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
4233 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4234 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4235 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4236
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4237 if (email) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4238 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
4239 gaim_account_get_username(gaim_connection_get_account(gc)), email);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4240 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
4241 g_free(dialog_msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4242 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4243
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4244 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4245 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4246
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4247 static void oscar_keepalive(GaimConnection *gc) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4248 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4249 aim_flap_nop(od->sess, od->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4250 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4251
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
4252 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
4253 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4254 struct direct_im *dim = find_direct_im(od, name);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4255 if (dim)
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4256 if (typing == GAIM_TYPING)
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
4257 aim_odc_send_typing(od->sess, dim->conn, 0x0002);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4258 else if (typing == GAIM_TYPED)
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
4259 aim_odc_send_typing(od->sess, dim->conn, 0x0001);
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
4260 else
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
4261 aim_odc_send_typing(od->sess, dim->conn, 0x0000);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4262 else {
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4263 /* Don't send if this turkey is in our deny list */
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4264 GSList *list;
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4265 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
4266 if (!list) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
4267 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
4268 if (bi && bi->typingnot) {
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4269 if (typing == GAIM_TYPING)
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4270 aim_im_sendmtn(od->sess, 0x0001, name, 0x0002);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4271 else if (typing == GAIM_TYPED)
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4272 aim_im_sendmtn(od->sess, 0x0001, name, 0x0001);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4273 else
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4274 aim_im_sendmtn(od->sess, 0x0001, name, 0x0000);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
4275 }
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4276 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4277 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4278 return 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4279 }
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4280 static void oscar_ask_direct_im(GaimConnection *gc, const char *name);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4281 static int gaim_odc_send_im(aim_session_t *, aim_conn_t *, const char *, GaimConvImFlags);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4282
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4283 static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, GaimConvImFlags imflags) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4284 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4285 struct direct_im *dim = find_direct_im(od, name);
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
4286 int ret = 0;
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4287 GError *err = NULL;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4288 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
4289 char *tmpmsg = NULL;
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
4290
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
4291 if (dim && dim->connected) {
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
4292 /* If we're directly connected, send a direct IM */
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
4293 ret = gaim_odc_send_im(od->sess, dim->conn, message, imflags);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4294 } else if (imflags & GAIM_CONV_IM_IMAGES) {
3044
e68e2ba82310 [gaim-migrate @ 3057]
Sean Egan <seanegan@gmail.com>
parents: 3035
diff changeset
4295 /* Trying to send an IM image outside of a direct connection. */
e68e2ba82310 [gaim-migrate @ 3057]
Sean Egan <seanegan@gmail.com>
parents: 3035
diff changeset
4296 oscar_ask_direct_im(gc, name);
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
4297 ret = -ENOTCONN;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4298 } else {
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4299 struct buddyinfo *bi;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4300 struct aim_sendimext_args args;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4301 struct stat st;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
4302 gsize len;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4303
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
4304 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4305 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4306 bi = g_new0(struct buddyinfo, 1);
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
4307 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(gc->account, name)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4308 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4309
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4310 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4311 if (od->icq) {
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4312 args.features = features_icq;
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4313 args.featureslen = sizeof(features_icq);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4314 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4315 } else {
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4316 args.features = features_aim;
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4317 args.featureslen = sizeof(features_aim);
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
4318
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4319 if (imflags & GAIM_CONV_IM_AUTO_RESP)
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
4320 args.flags |= AIM_IMFLAGS_AWAY;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4321 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4322
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4323 if (bi->ico_need) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4324 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4325 "Sending buddy icon request with message\n");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4326 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4327 bi->ico_need = FALSE;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4328 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4329
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4330 if (iconfile && !stat(iconfile, &st)) {
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4331 FILE *file = fopen(iconfile, "r");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4332 if (file) {
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4333 char *buf = g_malloc(st.st_size);
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4334 fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4335 fclose(file);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4336
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4337 args.iconlen = st.st_size;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4338 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4339 args.iconstamp = st.st_mtime;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4340
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
4341 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
4342 bi->ico_informed = FALSE;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
4343 bi->ico_sent = FALSE;
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
4344 }
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4345
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4346 if (!bi->ico_informed) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4347 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4348 "Claiming to have a buddy icon\n");
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4349 args.flags |= AIM_IMFLAGS_HASICON;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4350 bi->ico_me_len = args.iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4351 bi->ico_me_csum = args.iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4352 bi->ico_me_time = args.iconstamp;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4353 bi->ico_informed = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4354 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4355
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4356 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4357 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4358 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4359
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4360 args.destsn = name;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4361
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4362 /* For ICQ send newlines as CR/LF, for AIM send newlines as <BR> */
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4363 if (isdigit(name[0]))
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4364 tmpmsg = gaim_str_add_cr(message);
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4365 else
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4366 tmpmsg = gaim_strdup_withhtml(message);
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4367 len = strlen(tmpmsg);
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4368
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4369 args.flags |= oscar_encoding_check(tmpmsg);
3642
5e50f6746509 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4370 if (args.flags & AIM_IMFLAGS_UNICODE) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4371 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Sending Unicode IM\n");
4662
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
4372 args.charset = 0x0002;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4373 args.charsubset = 0x0000;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4374 args.msg = g_convert(tmpmsg, len, "UCS-2BE", "UTF-8", NULL, &len, &err);
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4375 if (err) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4376 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4377 "Error converting a unicode message: %s\n", err->message);
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4378 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4379 "This really shouldn't happen!\n");
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4380 /* We really shouldn't try to send the
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4381 * IM now, but I'm not sure what to do */
4800
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
4382 g_error_free(err);
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4383 }
3850
daf2cec08eac [gaim-migrate @ 4002]
Luke Schierer <lschiere@pidgin.im>
parents: 3783
diff changeset
4384 } else if (args.flags & AIM_IMFLAGS_ISO_8859_1) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4385 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4386 "Sending ISO-8859-1 IM\n");
4662
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
4387 args.charset = 0x0003;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4388 args.charsubset = 0x0000;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4389 args.msg = g_convert(tmpmsg, len, "ISO-8859-1", "UTF-8", NULL, &len, &err);
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4390 if (err) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4391 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4392 "conversion error: %s\n", err->message);
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4393 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4394 "Someone tell Ethan his 8859-1 detection is wrong\n");
3642
5e50f6746509 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4395 args.flags ^= AIM_IMFLAGS_ISO_8859_1 | AIM_IMFLAGS_UNICODE;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4396 len = strlen(tmpmsg);
4800
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
4397 g_error_free(err);
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4398 args.msg = g_convert(tmpmsg, len, "UCS-2BE", "UTF8", NULL, &len, &err);
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4399 if (err) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4400 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4401 "Error in unicode fallback: %s\n", err->message);
4800
4af15fbcb00a [gaim-migrate @ 5120]
Nathan Walp <nwalp@pidgin.im>
parents: 4799
diff changeset
4402 g_error_free(err);
3659
5b439da85c3b [gaim-migrate @ 3788]
Luke Schierer <lschiere@pidgin.im>
parents: 3643
diff changeset
4403 }
3642
5e50f6746509 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4404 }
5e50f6746509 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4405 } else {
4662
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
4406 args.charset = 0x0000;
6d8a3e81db48 [gaim-migrate @ 4973]
Mark Doliner <mark@kingant.net>
parents: 4657
diff changeset
4407 args.charsubset = 0x0000;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4408 args.msg = tmpmsg;
3642
5e50f6746509 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4409 }
5e50f6746509 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4410 args.msglen = len;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4411
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4412 ret = aim_im_sendch1_ext(od->sess, &args);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4413 }
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
4414
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4415 g_free(tmpmsg);
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4416
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
4417 if (ret >= 0)
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
4418 return 1;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4419
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
4420 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4421 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4422
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4423 static void oscar_get_info(GaimConnection *gc, const char *name) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4424 OscarData *od = (OscarData *)gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4425
7173
7c43dbbb198c [gaim-migrate @ 7741]
Mark Doliner <mark@kingant.net>
parents: 7172
diff changeset
4426 if (od->icq && isdigit(name[0]))
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
4427 aim_icq_getallinfo(od->sess, name);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
4428 else
7235
03f22e564311 [gaim-migrate @ 7810]
Mark Doliner <mark@kingant.net>
parents: 7173
diff changeset
4429 aim_locate_getinfoshort(od->sess, name, 0x00000003);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4430 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4431
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4432 static void oscar_get_away(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4433 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4434 if (od->icq) {
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4435 GaimBuddy *budlight = gaim_find_buddy(gc->account, who);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4436 if (budlight)
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
4437 if ((budlight->uc & 0xffff0000) >> 16)
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
4438 aim_im_sendch2_geticqaway(od->sess, who, (budlight->uc & 0xffff0000) >> 16);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4439 else
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4440 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4441 "Error: The user %s has no status message, therefore not requesting.\n", who);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4442 else
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4443 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4444 "Error: Could not find %s in local buddy list, therefore unable to request status message.\n", who);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
4445 } else
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4446 aim_locate_getinfoshort(od->sess, who, 0x00000002);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4447 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4448
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4449 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
4450 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
4451 /* 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
4452 OscarData *od = (OscarData *)gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4453 aim_locate_setdirinfo(od->sess, first, middle, last,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4454 maiden, NULL, NULL, city, state, NULL, 0, web);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4455 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4456
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4457 static void oscar_set_idle(GaimConnection *gc, int time) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4458 OscarData *od = (OscarData *)gc->proto_data;
7474
2bdacd38528c [gaim-migrate @ 8087]
Mark Doliner <mark@kingant.net>
parents: 7465
diff changeset
4459 aim_srv_setidle(od->sess, time);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4460 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4461
5954
fccc33d4b8fa [gaim-migrate @ 6398]
Mark Doliner <mark@kingant.net>
parents: 5948
diff changeset
4462 static void oscar_set_info(GaimConnection *gc, const char *text) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4463 OscarData *od = (OscarData *)gc->proto_data;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4464 fu32_t flags = 0;
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4465 char *text_html = NULL;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4466 char *msg = NULL;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
4467 gsize msglen = 0;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4468
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4469 if (od->rights.maxsiglen == 0)
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4470 gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4471 _("You have probably requested to set your "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4472 "profile before the login procedure completed. "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4473 "Your profile remains unset; try setting it "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4474 "again when you are fully connected."));
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4475
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4476 if (!text) {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4477 aim_locate_setprofile(od->sess, NULL, "", 0, NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4478 return;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4479 }
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4480
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4481 text_html = gaim_strdup_withhtml(text);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4482 flags = oscar_encoding_check(text_html);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4483 if (flags & AIM_IMFLAGS_UNICODE) {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4484 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4485 aim_locate_setprofile(od->sess, "unicode-2-0", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4486 g_free(msg);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4487 } else if (flags & AIM_IMFLAGS_ISO_8859_1) {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4488 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4489 aim_locate_setprofile(od->sess, "iso-8859-1", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4490 g_free(msg);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4491 } else {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4492 msglen = strlen(text_html);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4493 aim_locate_setprofile(od->sess, "us-ascii", text_html, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4494 }
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4495
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4496 if (msglen > od->rights.maxsiglen) {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4497 gchar *errstr;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4498 errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte "
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4499 "has been exceeded. Gaim has truncated it for you.",
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4500 "The maximum profile length of %d bytes "
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4501 "has been exceeded. Gaim has truncated it for you.",
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4502 od->rights.maxsiglen), od->rights.maxsiglen);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4503 gaim_notify_warning(gc, NULL, _("Profile too long."), errstr);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4504 g_free(errstr);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4505 }
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4506
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4507 g_free(text_html);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4508
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4509 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4510 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4511
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4512 static void oscar_set_away_aim(GaimConnection *gc, OscarData *od, const char *text)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4513 {
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4514 fu32_t flags = 0;
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4515 gchar *text_html = NULL;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4516 char *msg = NULL;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
4517 gsize msglen = 0;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4518
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4519 if (od->rights.maxawaymsglen == 0)
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4520 gaim_notify_warning(gc, NULL, _("Unable to set AIM away message."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4521 _("You have probably requested to set your "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4522 "away message before the login procedure "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4523 "completed. You remain in a \"present\" "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4524 "state; try setting it again when you are "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4525 "fully connected."));
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4526
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4527 if (gc->away) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4528 g_free(gc->away);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4529 gc->away = NULL;
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4530 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4531
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4532 if (!text) {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4533 aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0);
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4534 return;
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4535 }
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4536
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4537 text_html = gaim_strdup_withhtml(text);
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4538 flags = oscar_encoding_check(text_html);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4539 if (flags & AIM_IMFLAGS_UNICODE) {
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4540 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4541 aim_locate_setprofile(od->sess, NULL, NULL, 0, "unicode-2-0", msg,
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4542 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4543 g_free(msg);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4544 gc->away = g_strndup(text, od->rights.maxawaymsglen/2);
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4545 } else if (flags & AIM_IMFLAGS_ISO_8859_1) {
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4546 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4547 aim_locate_setprofile(od->sess, NULL, NULL, 0, "iso-8859-1", msg,
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4548 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4549 g_free(msg);
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4550 gc->away = g_strndup(text_html, od->rights.maxawaymsglen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4551 } else {
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4552 msglen = strlen(text_html);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4553 aim_locate_setprofile(od->sess, NULL, NULL, 0, "us-ascii", text_html,
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4554 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4555 gc->away = g_strndup(text_html, od->rights.maxawaymsglen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4556 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4557
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
4558 if (msglen > od->rights.maxawaymsglen) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4559 gchar *errstr;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4560
6308
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6302
diff changeset
4561 errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6302
diff changeset
4562 "has been exceeded. Gaim has truncated it for you.",
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6302
diff changeset
4563 "The maximum away message length of %d bytes "
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6302
diff changeset
4564 "has been exceeded. Gaim has truncated it for you.",
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6302
diff changeset
4565 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4566 gaim_notify_warning(gc, NULL, _("Away message too long."), errstr);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4567 g_free(errstr);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4568 }
6019
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4569
272c761c52e3 [gaim-migrate @ 6469]
Sean Egan <seanegan@gmail.com>
parents: 5975
diff changeset
4570 g_free(text_html);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4571 return;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4572 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4573
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4574 static void oscar_set_away_icq(GaimConnection *gc, OscarData *od, const char *state, const char *message)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4575 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4576 GaimAccount *account = gaim_connection_get_account(gc);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4577 if (gc->away) {
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4578 g_free(gc->away);
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4579 gc->away = NULL;
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4580 }
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4581
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4582 if (strcmp(state, _("Invisible"))) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4583 if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != account->perm_deny))
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4584 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4585 account->perm_deny = 4;
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4586 } else {
5542
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
4587 if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != 0x03))
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4588 aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff);
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4589 account->perm_deny = 3;
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4590 }
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4591
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4592 if (!strcmp(state, _("Online")))
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4593 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4594 else if (!strcmp(state, _("Away"))) {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4595 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4596 gc->away = g_strdup("");
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4597 } else if (!strcmp(state, _("Do Not Disturb"))) {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4598 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4599 gc->away = g_strdup("");
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4600 } else if (!strcmp(state, _("Not Available"))) {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4601 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4602 gc->away = g_strdup("");
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4603 } else if (!strcmp(state, _("Occupied"))) {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4604 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4605 gc->away = g_strdup("");
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4606 } else if (!strcmp(state, _("Free For Chat"))) {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4607 aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4608 gc->away = g_strdup("");
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4609 } else if (!strcmp(state, _("Invisible"))) {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4610 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4611 gc->away = g_strdup("");
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4612 } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) {
2998
6fe330f1b951 [gaim-migrate @ 3011]
Sean Egan <seanegan@gmail.com>
parents: 2995
diff changeset
4613 if (message) {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4614 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 4102
diff changeset
4615 gc->away = g_strdup("");
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4616 } else {
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4617 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
4618 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4619 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4620
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4621 return;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4622 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4623
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
4624 static void oscar_set_away(GaimConnection *gc, const char *state, const char *message)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4625 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4626 OscarData *od = (OscarData *)gc->proto_data;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4627
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4628 if (od->icq)
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4629 oscar_set_away_icq(gc, od, state, message);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4630 else
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4631 oscar_set_away_aim(gc, od, message);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4632
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4633 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4634 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4635
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
4636 static void oscar_warn(GaimConnection *gc, const char *name, int anon) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4637 OscarData *od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4638 aim_im_warn(od->sess, od->conn, name, anon ? AIM_WARN_ANON : 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4639 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4640
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4641 static void oscar_dir_search(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
4642 const char *maiden, const char *city, const char *state, const char *country, const char *email) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4643 OscarData *od = (OscarData *)gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4644 if (strlen(email))
6879
594682101ba6 [gaim-migrate @ 7425]
Mark Doliner <mark@kingant.net>
parents: 6873
diff changeset
4645 aim_search_address(od->sess, od->conn, email);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4646 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4647
6787
faa491042c66 [gaim-migrate @ 7326]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4648 static void oscar_add_buddy(GaimConnection *gc, const char *name, GaimGroup *g) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4649 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4650 #ifdef NOSSI
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4651 aim_add_buddy(od->sess, od->conn, name);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4652 #else
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4653 if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_exists(od->sess->ssi.local, name))) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4654 GaimBuddy *buddy = gaim_find_buddy(gc->account, name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4655 GaimGroup *group = gaim_find_buddys_group(buddy);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4656 if (buddy && group) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4657 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4658 "ssi: adding buddy %s to group %s\n", name, group->name);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4659 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4660 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4661 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4662 #endif
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4663 if (od->icq)
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4664 aim_icq_getalias(od->sess, name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4665 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4666
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4667 static void oscar_add_buddies(GaimConnection *gc, GList *buddies) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4668 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4669 #ifdef NOSSI
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4670 char buf[MSG_LEN];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4671 int n=0;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4672 while (buddies) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4673 if (n > MSG_LEN - 18) {
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
4674 aim_buddylist_set(od->sess, od->conn, buf);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4675 n = 0;
3092
beb5d0e592d9 [gaim-migrate @ 3106]
Sean Egan <seanegan@gmail.com>
parents: 3089
diff changeset
4676 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4677 n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", (char *)buddies->data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4678 buddies = buddies->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4679 }
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
4680 aim_buddylist_set(od->sess, od->conn, buf);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4681 #else
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4682 if (od->sess->ssi.received_data) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4683 while (buddies) {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
4684 oscar_add_buddy(gc, (const char *)buddies->data, NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4685 buddies = buddies->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4686 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4687 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4688 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4689 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4690
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
4691 static void oscar_remove_buddy(GaimConnection *gc, const char *name, const char *group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4692 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4693 #ifdef NOSSI
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4694 aim_remove_buddy(od->sess, od->conn, name);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4695 #else
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4696 if (od->sess->ssi.received_data) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4697 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4698 "ssi: deleting buddy %s from group %s\n", name, group);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4699 aim_ssi_delbuddy(od->sess, name, group);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4700 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4701 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4702 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4703
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4704 static void oscar_remove_buddies(GaimConnection *gc, GList *buddies, const char *group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4705 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4706 #ifdef NOSSI
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4707 GList *cur;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4708 for (cur=buddies; cur; cur=cur->next)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4709 aim_remove_buddy(od->sess, od->conn, cur->data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4710 #else
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4711 if (od->sess->ssi.received_data) {
3092
beb5d0e592d9 [gaim-migrate @ 3106]
Sean Egan <seanegan@gmail.com>
parents: 3089
diff changeset
4712 while (buddies) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4713 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4714 "ssi: deleting buddy %s from group %s\n", (char *)buddies->data, group);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4715 aim_ssi_delbuddy(od->sess, buddies->data, group);
3092
beb5d0e592d9 [gaim-migrate @ 3106]
Sean Egan <seanegan@gmail.com>
parents: 3089
diff changeset
4716 buddies = buddies->next;
beb5d0e592d9 [gaim-migrate @ 3106]
Sean Egan <seanegan@gmail.com>
parents: 3089
diff changeset
4717 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4718 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4719 #endif
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4720 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4721
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4722 #ifndef NOSSI
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4723 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
4724 OscarData *od = (OscarData *)gc->proto_data;
4303
22ebfa41525a [gaim-migrate @ 4557]
Mark Doliner <mark@kingant.net>
parents: 4299
diff changeset
4725 if (od->sess->ssi.received_data && strcmp(old_group, new_group)) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4726 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4727 "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
4728 aim_ssi_movebuddy(od->sess, old_group, new_group, name);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4729 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4730 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4731
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4732 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
4733 OscarData *od = (OscarData *)gc->proto_data;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4734 if (od->sess->ssi.received_data) {
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4735 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4736 if (gname) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4737 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4738 "ssi: changing the alias for buddy %s to %s\n", name, alias);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4739 aim_ssi_aliasbuddy(od->sess, gname, name, alias);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4740 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4741 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4742 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4743
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4744 static void oscar_rename_group(GaimConnection *g, const char *old_group, const char *new_group, GList *members) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4745 OscarData *od = (OscarData *)g->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4746
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4747 if (od->sess->ssi.received_data) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4748 if (aim_ssi_itemlist_finditem(od->sess->ssi.local, new_group, NULL, AIM_SSI_TYPE_GROUP)) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4749 oscar_remove_buddies(g, members, old_group);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4750 oscar_add_buddies(g, members);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4751 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4752 "ssi: moved all buddies from group %s to %s\n", old_group, new_group);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4753 } else {
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4754 aim_ssi_rename_group(od->sess, old_group, new_group);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4755 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4756 "ssi: renamed group %s to %s\n", old_group, new_group);
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4757 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4758 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4759 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4760
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4761 static gboolean gaim_ssi_rerequestdata(gpointer data) {
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4762 aim_session_t *sess = data;
6350
34c07f5f34a0 [gaim-migrate @ 6849]
Mark Doliner <mark@kingant.net>
parents: 6318
diff changeset
4763 aim_ssi_reqdata(sess);
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4764 return FALSE;
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4765 }
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4766
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4767 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
4768 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4769 OscarData *od = gc->proto_data;
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4770 va_list ap;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4771 fu16_t reason;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4772
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4773 va_start(ap, fr);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4774 reason = (fu16_t)va_arg(ap, unsigned int);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4775 va_end(ap);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4776
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4777 gaim_debug(GAIM_DEBUG_ERROR, "oscar", "ssi: SNAC error %hu\n", reason);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4778
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4779 if (reason == 0x0005) {
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
4780 gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
5828
136f26dcfeda [gaim-migrate @ 6259]
Nathan Walp <nwalp@pidgin.im>
parents: 5685
diff changeset
4781 _("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."));
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4782 od->getblisttimer = g_timeout_add(300000, gaim_ssi_rerequestdata, od->sess);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4783 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4784
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4785 /* Activate SSI */
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4786 /* 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
4787 /* Make sure your privacy setting/invisibility is set how you want it before this! */
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4788 gaim_debug(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
4789 aim_ssi_enable(od->sess);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4790
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4791 return 1;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4792 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4793
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4794 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
4795 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4796 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4797 int numtypes, i;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4798 fu16_t *maxitems;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4799 va_list ap;
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4800
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4801 va_start(ap, fr);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4802 numtypes = va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4803 maxitems = va_arg(ap, fu16_t *);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4804 va_end(ap);
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4805
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4806 gaim_debug(GAIM_DEBUG_MISC, "oscar", "ssi rights:");
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4807
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4808 for (i=0; i<numtypes; i++)
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4809 gaim_debug(GAIM_DEBUG_MISC, NULL, " max type 0x%04x=%hd,",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4810 i, maxitems[i]);
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4811
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4812 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4813
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4814 if (numtypes >= 0)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4815 od->rights.maxbuddies = maxitems[0];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4816 if (numtypes >= 1)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4817 od->rights.maxgroups = maxitems[1];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4818 if (numtypes >= 2)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4819 od->rights.maxpermits = maxitems[2];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4820 if (numtypes >= 3)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4821 od->rights.maxdenies = maxitems[3];
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4822
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4823 return 1;
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4824 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4825
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4826 static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4827 GaimConnection *gc = sess->aux_data;
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4828 GaimAccount *account = gaim_connection_get_account(gc);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4829 OscarData *od = (OscarData *)gc->proto_data;
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4830 struct aim_ssi_item *curitem;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4831 int tmp;
4778
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
4832 gboolean export = FALSE;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4833 /* XXX - use these?
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4834 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4835
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4836 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4837 fmtver = (fu16_t)va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4838 numitems = (fu16_t)va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4839 items = va_arg(ap, struct aim_ssi_item);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4840 timestamp = va_arg(ap, fu32_t);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4841 va_end(ap); */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4842
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4843 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4844 "ssi: syncing local list and server list\n");
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4845
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4846 /* Clean the buddy list */
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4847 aim_ssi_cleanlist(sess);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4848
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4849 /* Add from server list to local list */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4850 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
7328
3bcd867c22f3 [gaim-migrate @ 7914]
Mark Doliner <mark@kingant.net>
parents: 7313
diff changeset
4851 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
4852 switch (curitem->type) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4853 case 0x0000: { /* Buddy */
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
4854 if (curitem->name) {
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
4855 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
4856 char *gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4857 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
4858 char *alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4859 GaimBuddy *buddy = gaim_find_buddy(gc->account, curitem->name);
4458
a46c57f2d58b [gaim-migrate @ 4733]
Luke Schierer <lschiere@pidgin.im>
parents: 4452
diff changeset
4860 /* Should gname be freed here? -- elb */
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4861 /* 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
4862 free(alias);
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4863 if (buddy) {
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
4864 /* Get server stored alias */
4705
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4865 if (alias_utf8) {
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4866 g_free(buddy->alias);
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4867 buddy->alias = g_strdup(alias_utf8);
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4868 }
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4869 } else {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4870 GaimGroup *g;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
4871 buddy = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4872
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4873 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
4874 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4875 gaim_blist_add_group(g, NULL);
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4876 }
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4877
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4878 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4879 "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans"));
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4880 gaim_blist_add_buddy(buddy, NULL, g, NULL);
4778
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
4881 export = TRUE;
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
4882 }
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
4883 g_free(gname_utf8);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
4884 g_free(alias_utf8);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4885 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4886 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4887
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4888 case 0x0001: { /* Group */
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4889 /* Shouldn't add empty groups */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4890 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4891
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4892 case 0x0002: { /* Permit buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4893 if (curitem->name) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4894 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4895 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4896 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
4897 if (!list) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4898 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4899 "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
4900 gaim_privacy_permit_add(account, curitem->name, TRUE);
4778
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
4901 export = TRUE;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4902 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4903 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4904 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4905
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4906 case 0x0003: { /* Deny buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4907 if (curitem->name) {
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4908 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4909 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
4910 if (!list) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4911 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4912 "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
4913 gaim_privacy_deny_add(account, curitem->name, TRUE);
4778
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
4914 export = TRUE;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4915 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4916 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4917 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4918
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4919 case 0x0004: { /* Permit/deny setting */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4920 if (curitem->data) {
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4921 fu8_t permdeny;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4922 if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != account->perm_deny)) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4923 gaim_debug(GAIM_DEBUG_INFO, "oscar",
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4924 "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
4925 account->perm_deny = permdeny;
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4926 if (od->icq && account->perm_deny == 0x03) {
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4927 serv_set_away(gc, "Invisible", "");
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4928 }
4778
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
4929 export = TRUE;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4930 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4931 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4932 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4933
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4934 case 0x0005: { /* Presence setting */
3109
51f49dcbd14b [gaim-migrate @ 3123]
Sean Egan <seanegan@gmail.com>
parents: 3106
diff changeset
4935 /* 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
4936 } break;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4937 } /* End of switch on curitem->type */
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4938 } /* End of for loop */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4939
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4940 /* If changes were made, then flush buddy list to file */
4778
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
4941 if (export)
4349
0c68d402f59f [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4942 gaim_blist_save();
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4943
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4944 { /* Add from local list to server list */
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4945 GaimBlistNode *gnode, *cnode, *bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4946 GaimGroup *group;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4947 GaimBuddy *buddy;
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7095
diff changeset
4948 GaimBuddyList *blist;
3017
f0e8770d786d [gaim-migrate @ 3030]
Rob Flynn <gaim@robflynn.com>
parents: 3016
diff changeset
4949 GSList *cur;
f0e8770d786d [gaim-migrate @ 3030]
Rob Flynn <gaim@robflynn.com>
parents: 3016
diff changeset
4950
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4951 /* Buddies */
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4952 if ((blist = gaim_get_blist()))
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4953 for (gnode = blist->root; gnode; gnode = gnode->next) {
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4954 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4955 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4956 group = (GaimGroup *)gnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4957 for (cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4958 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4959 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4960 for (bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4961 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4962 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4963 buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4964 if (buddy->account == gc->account) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
4965 const char *servernick = gaim_blist_node_get_string((GaimBlistNode*)buddy, "servernick");
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
4966 if (servernick)
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4967 serv_got_alias(gc, buddy->name, servernick);
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
4968
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4969 if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4970 /* Store local alias on server */
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4971 char *alias = aim_ssi_getalias(sess->ssi.local, group->name, buddy->name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4972 if (!alias && buddy->alias && strlen(buddy->alias))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4973 aim_ssi_aliasbuddy(sess, group->name, buddy->name, buddy->alias);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4974 free(alias);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4975 } else {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4976 gaim_debug(GAIM_DEBUG_INFO, "oscar",
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4977 "ssi: adding buddy %s from local list to server list\n", buddy->name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4978 aim_ssi_addbuddy(sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4979 }
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4980 }
4349
0c68d402f59f [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4981 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4982 }
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
4983 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4984
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4985 /* Permit list */
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4986 if (gc->account->permit) {
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4987 for (cur=gc->account->permit; cur; cur=cur->next)
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4988 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4989 gaim_debug(GAIM_DEBUG_INFO, "oscar",
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4990 "ssi: adding permit %s from local list to server list\n", (char *)cur->data);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
4991 aim_ssi_addpermit(sess, cur->data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4992 }
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4993 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4994
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4995 /* Deny list */
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4996 if (gc->account->deny) {
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4997 for (cur=gc->account->deny; cur; cur=cur->next)
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4998 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4999 gaim_debug(GAIM_DEBUG_INFO, "oscar",
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5000 "ssi: adding deny %s from local list to server list\n", (char *)cur->data);
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
5001 aim_ssi_adddeny(sess, cur->data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5002 }
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5003 }
3109
51f49dcbd14b [gaim-migrate @ 3123]
Sean Egan <seanegan@gmail.com>
parents: 3106
diff changeset
5004 /* Presence settings (idle time visibility) */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5005 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
5631
960fe32ea9b7 [gaim-migrate @ 6038]
Nathan Walp <nwalp@pidgin.im>
parents: 5630
diff changeset
5006 if (!(tmp & 0x400))
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
5007 aim_ssi_setpresence(sess, tmp | 0x400);
4778
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
5008 } /* end adding buddies from local list to server list */
85c6c3a60503 [gaim-migrate @ 5098]
Mark Doliner <mark@kingant.net>
parents: 4776
diff changeset
5009
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5010 /* Set our ICQ status */
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5011 if (od->icq && !gc->away) {
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5012 aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL);
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5013 }
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
5014
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
5015 /* Activate SSI */
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
5016 /* 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
5017 /* Make sure your privacy setting/invisibility is set how you want it before this! */
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5018 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5019 "ssi: activating server-stored buddy list\n");
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
5020 aim_ssi_enable(sess);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
5021
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5022 return 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5023 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5024
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5025 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
5026 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5027 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5028 struct aim_ssi_tmp *retval;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5029
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5030 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5031 retval = va_arg(ap, struct aim_ssi_tmp *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5032 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5033
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5034 while (retval) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5035 gaim_debug(GAIM_DEBUG_MISC, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5036 "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
5037
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5038 if (retval->ack != 0xffff)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5039 switch (retval->ack) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5040 case 0x0000: { /* added successfully */
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5041 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5042
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
5043 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
5044 gchar *buf;
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
5045 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)")));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5046 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
5047 g_free(buf);
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
5048 }
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
5049
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
5050 case 0x000e: { /* buddy requires authorization */
4828
71232144e2ff [gaim-migrate @ 5153]
Mark Doliner <mark@kingant.net>
parents: 4827
diff changeset
5051 if ((retval->action == AIM_CB_SSI_ADD) && (retval->name))
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5052 gaim_auth_sendrequest(gc, retval->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5053 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5054
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5055 default: { /* La la la */
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
5056 gchar *buf;
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
5057 gaim_debug(GAIM_DEBUG_ERROR, "oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
5058 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)")));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5059 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
5060 g_free(buf);
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
5061 /* XXX - Should remove buddy from local list */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5062 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5063 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5064
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5065 retval = retval->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5066 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5067
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5068 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5069 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5070
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5071 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
5072 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5073 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5074 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5075 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5076 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5077 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5078
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5079 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5080 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5081 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5082 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5083
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5084 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5085 "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
5086
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5087 buddy = gaim_find_buddy(gc->account, sn);
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5088 if (buddy && (gaim_get_buddy_alias_only(buddy)))
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5089 nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5090 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5091 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5092
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5093 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
5094 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5095 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5096 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5097 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5098
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5099 gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5100 0, data,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
5101 G_CALLBACK(gaim_icq_buddyadd),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
5102 G_CALLBACK(oscar_free_name_data));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5103
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5104 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5105 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5106
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5107 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5108 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5109
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5110 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
5111 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5112 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5113 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5114 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5115 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5116 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5117
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5118 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5119 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5120 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5121 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5122
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5123 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5124 "ssi: received authorization request from %s\n", sn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5125
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5126 buddy = gaim_find_buddy(gc->account, sn);
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5127 if (buddy && (gaim_get_buddy_alias_only(buddy)))
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5128 nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5129 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5130 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5131
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
5132 dialog_msg = g_strdup_printf(_("The user %s wants to add you to their buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5133 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5134 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5135 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5136 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5137
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5138 gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5139 0, data, 2,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5140 _("Authorize"), G_CALLBACK(gaim_auth_grant),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5141 _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5142
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5143 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5144 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5145
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5146 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5147 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5148
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5149 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
5150 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5151 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5152 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5153 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5154 fu8_t reply;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5155 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5156
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5157 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5158 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5159 reply = (fu8_t)va_arg(ap, int);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5160 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5161 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5162
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5163 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5164 "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
5165
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5166 buddy = gaim_find_buddy(gc->account, sn);
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5167 if (buddy && (gaim_get_buddy_alias_only(buddy)))
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5168 nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5169 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5170 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5171
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5172 if (reply) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5173 /* Granted */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
5174 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
5175 gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5176 } else {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5177 /* Denied */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
5178 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
5179 gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5180 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5181 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5182 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5183
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5184 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5185 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5186
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5187 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
5188 GaimConnection *gc = sess->aux_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5189 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5190 char *sn;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5191 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5192
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5193 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5194 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5195 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5196
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5197 buddy = gaim_find_buddy(gc->account, sn);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5198 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5199 "ssi: %s added you to their buddy list\n", sn);
7015
dece74f05509 [gaim-migrate @ 7578]
Christian Hammond <chipx86@chipx86.com>
parents: 7011
diff changeset
5200 gaim_account_notify_added(gc->account, NULL, sn, (buddy ? gaim_get_buddy_alias_only(buddy) : NULL), NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5201
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5202 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5203 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
5204 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5205
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5206 static GList *oscar_chat_info(GaimConnection *gc) {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5207 GList *m = NULL;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5208 struct proto_chat_entry *pce;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5209
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5210 pce = g_new0(struct proto_chat_entry, 1);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5211 pce->label = _("Join what group:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5212 pce->identifier = "room";
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5213 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5214
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5215 pce = g_new0(struct proto_chat_entry, 1);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5216 pce->label = _("Exchange:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5217 pce->identifier = "exchange";
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5218 pce->is_int = TRUE;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5219 pce->min = 4;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5220 pce->max = 20;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5221 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5222
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5223 return m;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5224 }
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5225
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5226 static void oscar_join_chat(GaimConnection *g, GHashTable *data) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5227 OscarData *od = (OscarData *)g->proto_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5228 aim_conn_t *cur;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5229 char *name, *exchange;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5230
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5231 name = g_hash_table_lookup(data, "room");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5232 exchange = g_hash_table_lookup(data, "exchange");
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5233
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5234 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5235 "Attempting to join chat room %s.\n", name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5236 if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) {
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5237 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5238 "chatnav exists, creating room\n");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5239 aim_chatnav_createroom(od->sess, cur, name, atoi(exchange));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5240 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5241 /* this gets tricky */
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
5242 struct create_room *cr = g_new0(struct create_room, 1);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5243 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5244 "chatnav does not exist, opening chatnav\n");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5245 cr->exchange = atoi(exchange);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
5246 cr->name = g_strdup(name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5247 od->create_rooms = g_slist_append(od->create_rooms, cr);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5248 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5249 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5250 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5251
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5252 static void oscar_chat_invite(GaimConnection *g, int id, const char *message, const char *name) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5253 OscarData *od = (OscarData *)g->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5254 struct chat_connection *ccon = find_oscar_chat(g, id);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5255
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5256 if (!ccon)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5257 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5258
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5259 aim_chat_invite(od->sess, od->conn, name, message ? message : "",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5260 ccon->exchange, ccon->name, 0x0);
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
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5263 static void oscar_chat_leave(GaimConnection *g, int id) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5264 OscarData *od = g ? (OscarData *)g->proto_data : NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5265 GSList *bcs = g->buddy_chats;
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5266 GaimConversation *b = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5267 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5268 int count = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5269
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5270 while (bcs) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5271 count++;
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5272 b = (GaimConversation *)bcs->data;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5273 if (id == gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5274 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5275 bcs = bcs->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5276 b = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5277 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5278
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5279 if (!b)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5280 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5281
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5282 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5283 "Attempting to leave room %s (currently in %d rooms)\n", b->name, count);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5284
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5285 c = find_oscar_chat(g, gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5286 if (c != NULL) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5287 if (od)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5288 od->oscar_chats = g_slist_remove(od->oscar_chats, c);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5289 if (c->inpa > 0)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
5290 gaim_input_remove(c->inpa);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5291 if (g && od->sess)
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5292 aim_conn_kill(od->sess, &c->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5293 g_free(c->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5294 g_free(c->show);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5295 g_free(c);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5296 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5297 /* we do this because with Oscar it doesn't tell us we left */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5298 serv_got_chat_left(g, gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5299 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5300
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
5301 static int oscar_chat_send(GaimConnection *g, int id, const char *message) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5302 OscarData *od = (OscarData *)g->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5303 GSList *bcs = g->buddy_chats;
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5304 GaimConversation *b = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5305 struct chat_connection *c = NULL;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5306 char *buf, *buf2;
7631
ea2d07ad05a9 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7621
diff changeset
5307 guint i, j;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5308
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5309 while (bcs) {
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5310 b = (GaimConversation *)bcs->data;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5311 if (id == gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5312 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5313 bcs = bcs->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5314 b = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5315 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5316 if (!b)
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5317 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5318
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5319 bcs = od->oscar_chats;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5320 while (bcs) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5321 c = (struct chat_connection *)bcs->data;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5322 if (b == c->cnv)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5323 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5324 bcs = bcs->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5325 c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5326 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5327 if (!c)
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5328 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5329
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5330 buf = g_malloc(strlen(message) * 4 + 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5331 for (i = 0, j = 0; i < strlen(message); i++) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5332 if (message[i] == '\n') {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5333 buf[j++] = '<';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5334 buf[j++] = 'B';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5335 buf[j++] = 'R';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5336 buf[j++] = '>';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5337 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5338 buf[j++] = message[i];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5339 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5340 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5341 buf[j] = '\0';
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5342
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5343 if (strlen(buf) > c->maxlen)
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5344 return -E2BIG;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5345
7095
c8bf2da398e3 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7093
diff changeset
5346 buf2 = gaim_markup_strip_html(buf);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5347 if (strlen(buf2) > c->maxvis) {
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5348 g_free(buf2);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5349 return -E2BIG;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5350 }
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5351 g_free(buf2);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5352
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5353 aim_chat_send_im(od->sess, c->conn, 0, buf, strlen(buf));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5354 g_free(buf);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5355 return 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5356 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5357
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5358 static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b) {
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5359 if (!b || (b && b->name && b->name[0] == '+')) {
5646
48c63ee49961 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
5360 if (a != NULL && isdigit(*gaim_account_get_username(a)))
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5361 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5362 else
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5363 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5364 }
5646
48c63ee49961 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
5365
48c63ee49961 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
5366 if (b != NULL && isdigit(b->name[0]))
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5367 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5368 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5369 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5370
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5371 static void oscar_list_emblems(GaimBuddy *b, char **se, char **sw, char **nw, char **ne)
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5372 {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5373 GaimAccount *account = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5374 GaimConnection *gc = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5375 OscarData *od = NULL;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5376 char *emblems[4] = {NULL,NULL,NULL,NULL};
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5377 int i = 0;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5378 aim_userinfo_t *userinfo = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5379
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5380 if (b != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5381 account = b->account;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5382 if (account != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5383 gc = account->gc;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5384 if (gc != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5385 od = gc->proto_data;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5386
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5387 if (!GAIM_BUDDY_IS_ONLINE(b)) {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5388 char *gname;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5389 if ((b->name) && (od) && (od->sess->ssi.received_data) &&
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5390 (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) &&
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5391 (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5392 emblems[i++] = "notauthorized";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5393 } else {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5394 emblems[i++] = "offline";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5395 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5396 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
5397
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5398 if (b->name && (b->uc & 0xffff0000) && isdigit(b->name[0])) {
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5399 int uc = b->uc >> 16;
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5400 if (uc & AIM_ICQ_STATE_INVISIBLE)
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5401 emblems[i++] = "invisible";
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5402 else if (uc & AIM_ICQ_STATE_CHAT)
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5403 emblems[i++] = "freeforchat";
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5404 else if (uc & AIM_ICQ_STATE_DND)
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5405 emblems[i++] = "dnd";
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5406 else if (uc & AIM_ICQ_STATE_OUT)
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5407 emblems[i++] = "na";
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5408 else if (uc & AIM_ICQ_STATE_BUSY)
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5409 emblems[i++] = "occupied";
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5410 else if (uc & AIM_ICQ_STATE_AWAY)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5411 emblems[i++] = "away";
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5412 } else {
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5413 if (b->uc & UC_UNAVAILABLE)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5414 emblems[i++] = "away";
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5415 }
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5416 if (b->uc & UC_WIRELESS)
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5417 emblems[i++] = "wireless";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5418 if (b->uc & UC_AOL)
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5419 emblems[i++] = "aol";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5420 if (b->uc & UC_ADMIN)
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5421 emblems[i++] = "admin";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5422 if (b->uc & UC_AB && i < 4)
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5423 emblems[i++] = "activebuddy";
6318
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
5424 if (b->uc & UC_HIPTOP && i < 4)
96196cfb132e [gaim-migrate @ 6817]
Mark Doliner <mark@kingant.net>
parents: 6310
diff changeset
5425 emblems[i++] = "hiptop";
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5426 /* if (b->uc & UC_UNCONFIRMED && i < 4)
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5427 emblems[i++] = "unconfirmed"; */
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5428
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5429 if ((i < 4) && (od != NULL)) {
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5430 userinfo = aim_locate_finduserinfo(od->sess, b->name);
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5431 if ((userinfo != NULL) && (userinfo->capabilities & AIM_CAPS_SECUREIM))
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5432 emblems[i++] = "secure";
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5433 }
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5434
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5435 *se = emblems[0];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5436 *sw = emblems[1];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5437 *nw = emblems[2];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5438 *ne = emblems[3];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5439 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5440
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5441 static char *oscar_tooltip_text(GaimBuddy *b) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5442 GaimConnection *gc = b->account->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5443 OscarData *od = gc->proto_data;
7692
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5444 GaimGroup *g = gaim_find_buddys_group(b);
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5445 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name));
7045
237ad253dd34 [gaim-migrate @ 7608]
Mark Doliner <mark@kingant.net>
parents: 7038
diff changeset
5446 aim_userinfo_t *userinfo = aim_locate_finduserinfo(od->sess, b->name);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5447 gchar *tmp = NULL, *ret = g_strdup("");
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5448
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5449 if (GAIM_BUDDY_IS_ONLINE(b)) {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5450 if (isdigit(b->name[0])) {
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5451 char *status;
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5452 status = gaim_icq_status((b->uc & 0xffff0000) >> 16);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5453 tmp = ret;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5454 ret = g_strconcat(tmp, _("<b>Status:</b> "), status, "\n", NULL);
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5455 g_free(tmp);
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5456 g_free(status);
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5457 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5458
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5459 if (userinfo != NULL) {
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5460 char *tstr = gaim_str_seconds_to_string(time(NULL) - userinfo->onlinesince +
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5461 (gc->login_time_official ? gc->login_time_official - gc->login_time : 0));
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5462 tmp = ret;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5463 ret = g_strconcat(tmp, _("<b>Logged In:</b> "), tstr, "\n", NULL);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5464 g_free(tmp);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5465 g_free(tstr);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5466 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5467
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5468 if ((bi != NULL) && (bi->ipaddr)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5469 char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5470 (bi->ipaddr & 0xff000000) >> 24,
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5471 (bi->ipaddr & 0x00ff0000) >> 16,
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5472 (bi->ipaddr & 0x0000ff00) >> 8,
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5473 (bi->ipaddr & 0x000000ff));
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5474 tmp = ret;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5475 ret = g_strconcat(tmp, _("<b>IP Address:</b> "), tstr, "\n", NULL);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5476 g_free(tmp);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5477 g_free(tstr);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5478 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5479
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5480 if ((userinfo != NULL) && (userinfo->capabilities)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5481 char *caps = caps_string(userinfo->capabilities);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5482 tmp = ret;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5483 ret = g_strconcat(tmp, _("<b>Capabilities:</b> "), caps, "\n", NULL);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5484 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5485 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5486
7692
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5487 if (g && g->name) {
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5488 char *comment = NULL;
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5489 comment = aim_ssi_getcomment(od->sess->ssi.local, g->name, b->name);
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5490 if (comment != NULL) {
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5491 tmp = ret;
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5492 ret = g_strconcat(tmp, _("<b>Buddy Comment:</b> "), comment, "\n", NULL);
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5493 free(tmp);
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5494 free(comment);
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5495 }
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5496 }
8a826b27fcfb [gaim-migrate @ 8337]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
5497
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5498 if ((bi != NULL) && (bi->availmsg != NULL) && !(b->uc & UC_UNAVAILABLE)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5499 gchar *escaped = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5500 tmp = ret;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5501 ret = g_strconcat(tmp, _("<b>Available:</b> "), escaped, "\n", NULL);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5502 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5503 g_free(escaped);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5504 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5505
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5506 if ((userinfo != NULL) && (userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5507 gchar *away_utf8 = oscar_encoding_to_utf8(userinfo->away_encoding, userinfo->away, userinfo->away_len);
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5508 if (away_utf8 != NULL) {
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
5509 gchar *tmp1, *tmp2;
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5510 const char *tmp3;
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
5511 tmp1 = gaim_strreplace(away_utf8, "<BR>", "\n");
7095
c8bf2da398e3 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7093
diff changeset
5512 tmp2 = gaim_markup_strip_html(tmp1);
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
5513 g_free(tmp1);
7235
03f22e564311 [gaim-migrate @ 7810]
Mark Doliner <mark@kingant.net>
parents: 7173
diff changeset
5514 tmp1 = g_markup_escape_text(tmp2, strlen(tmp2));
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
5515 g_free(tmp2);
7235
03f22e564311 [gaim-migrate @ 7810]
Mark Doliner <mark@kingant.net>
parents: 7173
diff changeset
5516 tmp3 = gaim_str_sub_away_formatters(tmp1, gaim_account_get_username(gaim_connection_get_account(gc)));
03f22e564311 [gaim-migrate @ 7810]
Mark Doliner <mark@kingant.net>
parents: 7173
diff changeset
5517 g_free(tmp1);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5518 tmp = ret;
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5519 ret = g_strconcat(tmp, _("<b>Away Message:</b> "), tmp3, "\n", NULL);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
5520 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5521 g_free(away_utf8);
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
5522 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5523 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5524 } else {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5525 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name);
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5526 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name)) {
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5527 tmp = ret;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5528 ret = g_strconcat(tmp, _("<b>Status:</b> Not Authorized"), "\n", NULL);
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5529 g_free(tmp);
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5530 } else {
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5531 tmp = ret;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5532 ret = g_strconcat(tmp, _("<b>Status:</b> Offline"), "\n", NULL);
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5533 g_free(tmp);
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5534 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5535 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5536
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5537 /* remove the trailing newline character */
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5538 if (ret)
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5539 ret[strlen(ret)-1] = '\0';
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5540 return ret;
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5541 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5542
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5543 static char *oscar_status_text(GaimBuddy *b) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5544 GaimConnection *gc = b->account->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5545 OscarData *od = gc->proto_data;
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5546 gchar *ret = NULL;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5547
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5548 if ((b->uc & UC_UNAVAILABLE) || (((b->uc & 0xffff0000) >> 16) & AIM_ICQ_STATE_CHAT)) {
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5549 if (isdigit(b->name[0]))
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5550 ret = gaim_icq_status((b->uc & 0xffff0000) >> 16);
7038
1ab06a680ac2 [gaim-migrate @ 7601]
Mark Doliner <mark@kingant.net>
parents: 7037
diff changeset
5551 else
1ab06a680ac2 [gaim-migrate @ 7601]
Mark Doliner <mark@kingant.net>
parents: 7037
diff changeset
5552 ret = g_strdup(_("Away"));
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
5553 } else if (GAIM_BUDDY_IS_ONLINE(b)) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5554 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name));
6292
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
5555 if (bi->availmsg)
6651ecdda5d6 [gaim-migrate @ 6791]
Mark Doliner <mark@kingant.net>
parents: 6281
diff changeset
5556 ret = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
5557 } else {
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5558 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
5559 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5560 ret = g_strdup(_("Not Authorized"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5561 else
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5562 ret = g_strdup(_("Offline"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5563 }
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5564
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5565 return ret;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5566 }
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5567
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5568
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
5569 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
5570 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5571 OscarData *od = gc->proto_data;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5572 va_list ap;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5573 fu16_t type;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5574 fu8_t flags = 0, length = 0;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5575 char *md5 = NULL;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5576
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5577
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5578 va_start(ap, fr);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5579 type = va_arg(ap, int);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5580
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5581 switch(type) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5582 case 0x0000:
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5583 case 0x0001: {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5584 flags = va_arg(ap, int);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5585 length = va_arg(ap, int);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5586 md5 = va_arg(ap, char *);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5587
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5588 if (flags == 0x41) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5589 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
5590 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5591 od->set_icon = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5592 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5593 } else {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5594 struct stat st;
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5595 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5596 if (iconfile == NULL) {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5597 /* Set an empty icon, or something */
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5598 } else if (!stat(iconfile, &st)) {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5599 char *buf = g_malloc(st.st_size);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5600 FILE *file = fopen(iconfile, "rb");
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5601 if (file) {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5602 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5603 fclose(file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5604 gaim_debug(GAIM_DEBUG_INFO, "oscar",
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5605 "Uploading icon to icon server\n");
6879
594682101ba6 [gaim-migrate @ 7425]
Mark Doliner <mark@kingant.net>
parents: 6873
diff changeset
5606 aim_bart_upload(od->sess, buf, st.st_size);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5607 } else
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5608 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5609 "Can't open buddy icon file!\n");
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5610 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5611 } else {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5612 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5613 "Can't stat buddy icon file!\n");
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5614 }
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5615 }
5893
718c1e8d5728 [gaim-migrate @ 6325]
Sean Egan <seanegan@gmail.com>
parents: 5892
diff changeset
5616 } else if (flags == 0x81)
718c1e8d5728 [gaim-migrate @ 6325]
Sean Egan <seanegan@gmail.com>
parents: 5892
diff changeset
5617 aim_ssi_seticon(od->sess, md5, length);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5618 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5619
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5620 case 0x0002: { /* We just set an "available" message? */
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5621 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5622 }
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5623
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5624 va_end(ap);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
5625
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
5626 return 0;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5627 }
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5628
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
5629 /*
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5630 * We have just established a socket with the other dude, so set up some handlers.
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
5631 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5632 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
5633 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5634 OscarData *od = (OscarData *)gc->proto_data;
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5635 GaimConversation *cnv;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5636 struct direct_im *dim;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5637 char buf[256];
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5638 char *sn;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5639 va_list ap;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5640 aim_conn_t *newconn, *listenerconn;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5641
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5642 va_start(ap, fr);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5643 newconn = va_arg(ap, aim_conn_t *);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5644 listenerconn = va_arg(ap, aim_conn_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5645 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5646
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5647 aim_conn_close(listenerconn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5648 aim_conn_kill(sess, &listenerconn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5649
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5650 sn = g_strdup(aim_odc_getsn(newconn));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5651
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5652 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5653 "DirectIM: initiate success to %s\n", sn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5654 dim = find_direct_im(od, sn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5655
6640
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6623
diff changeset
5656 cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
5657 gaim_input_remove(dim->watcher);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5658 dim->conn = newconn;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5659 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5660 dim->connected = TRUE;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5661 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5662 g_free(sn);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5663 gaim_conversation_write(cnv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5664
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5665 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, gaim_odc_incoming, 0);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5666 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, gaim_odc_typing, 0);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5667 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, gaim_odc_update_ui, 0);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5668
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5669 return 1;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5670 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5671
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5672 /*
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5673 * This is called when each chunk of an image is received. It can be used to
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5674 * update a progress bar, or to eat lots of dry cat food. Wet cat food is
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5675 * nasty, you sicko.
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5676 */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5677 static int gaim_odc_update_ui(aim_session_t *sess, aim_frame_t *fr, ...) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5678 va_list ap;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5679 char *sn;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5680 double percent;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5681 GaimConnection *gc = sess->aux_data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5682 OscarData *od = (OscarData *)gc->proto_data;
5679
0a0116686d51 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5683 GaimConversation *c;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5684 struct direct_im *dim;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5685
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5686 va_start(ap, fr);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5687 sn = va_arg(ap, char *);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5688 percent = va_arg(ap, double);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5689 va_end(ap);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5690
2994
60018f862a51 [gaim-migrate @ 3007]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
5691 if (!(dim = find_direct_im(od, sn)))
60018f862a51 [gaim-migrate @ 3007]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
5692 return 1;
3059
966c4e460ebb [gaim-migrate @ 3073]
Sean Egan <seanegan@gmail.com>
parents: 3048
diff changeset
5693 if (dim->watcher) {
966c4e460ebb [gaim-migrate @ 3073]
Sean Egan <seanegan@gmail.com>
parents: 3048
diff changeset
5694 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
966c4e460ebb [gaim-migrate @ 3073]
Sean Egan <seanegan@gmail.com>
parents: 3048
diff changeset
5695 dim->watcher = 0;
966c4e460ebb [gaim-migrate @ 3073]
Sean Egan <seanegan@gmail.com>
parents: 3048
diff changeset
5696 }
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5697 /* XXX is this really necessary? */
7082
25a616f16b6c [gaim-migrate @ 7647]
Christian Hammond <chipx86@chipx86.com>
parents: 7080
diff changeset
5698 gaim_core_mainloop_finish_events();
6640
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6623
diff changeset
5699
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5700 c = gaim_find_conversation_with_account(sn, gaim_connection_get_account(gc));
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5701 if (c != NULL)
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
5702 gaim_conversation_update_progress(c, percent);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5703 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5704 oscar_callback, dim->conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5705
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5706 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5707 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5708
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5709 /*
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5710 * This is called after a direct IM has been received in its entirety. This
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5711 * function is passed a long chunk of data which contains the IM with any
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5712 * data chunks (images) appended to it.
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5713 *
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5714 * This function rips out all the data chunks and creates an imgstore for
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5715 * each one. In order to do this, it first goes through the IM and takes
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5716 * out all the IMG tags. When doing so, it rewrites the original IMG tag
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5717 * with one compatable with the imgstore Gaim core code. For each one, we
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5718 * then read in chunks of data from the end of the message and actually
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5719 * create the img store using the given data.
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5720 *
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5721 * For somewhat easy reference, here's a sample message
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5722 * (without the whitespace and asterisks):
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5723 *
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5724 * <HTML><BODY BGCOLOR="#ffffff">
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5725 * <FONT LANG="0">
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5726 * This is a really stupid picture:<BR>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5727 * <IMG SRC="Sample.jpg" ID="1" WIDTH="283" HEIGHT="212" DATASIZE="9894"><BR>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5728 * Yeah it is<BR>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5729 * Here is another one:<BR>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5730 * <IMG SRC="Soap Bubbles.bmp" ID="2" WIDTH="256" HEIGHT="256" DATASIZE="65978">
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5731 * </FONT>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5732 * </BODY></HTML>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5733 * <BINARY>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5734 * <DATA ID="1" SIZE="9894">datadatadatadata</DATA>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5735 * <DATA ID="2" SIZE="65978">datadatadatadata</DATA>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5736 * </BINARY>
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5737 */
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5738 static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5739 GaimConnection *gc = sess->aux_data;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5740 GaimConvImFlags imflags = 0;
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5741 GString *newmsg = g_string_new("");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5742 GSList *images = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5743 va_list ap;
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5744 const char *sn, *msg, *msgend, *binary;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5745 size_t len;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5746 int encoding, isawaymsg;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5747
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5748 va_start(ap, fr);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5749 sn = va_arg(ap, const char *);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5750 msg = va_arg(ap, const char *);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5751 len = va_arg(ap, size_t);
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
5752 encoding = va_arg(ap, int);
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5753 isawaymsg = va_arg(ap, int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5754 va_end(ap);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5755 msgend = msg + len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5756
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5757 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5758 "Got DirectIM message from %s\n", sn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5759
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5760 if (isawaymsg)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5761 imflags |= GAIM_CONV_IM_AUTO_RESP;
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5762
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5763 /* message has a binary trailer */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5764 if ((binary = gaim_strcasestr(msg, "<binary>"))) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5765 GData *attribs;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5766 const char *tmp, *start, *end, *last = NULL;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5767
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5768 tmp = msg;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5769
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5770 /* for each valid image tag... */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5771 while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5772 const char *id, *src, *datasize;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5773 const char *tag = NULL, *data = NULL;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5774 size_t size;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5775 int imgid = 0;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5776
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5777 /* update the location of the last img tag */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5778 last = end;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5779
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5780 /* grab attributes */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5781 id = g_datalist_get_data(&attribs, "id");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5782 src = g_datalist_get_data(&attribs, "src");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5783 datasize = g_datalist_get_data(&attribs, "datasize");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5784
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5785 /* if we have id & datasize, build the data tag */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5786 if (id && datasize)
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5787 tag = g_strdup_printf("<data id=\"%s\" size=\"%s\">", id, datasize);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5788
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5789 /* if we have a tag, find the start of the data */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5790 if (tag && (data = gaim_strcasestr(binary, tag)))
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5791 data += strlen(tag);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5792
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5793 /* check the data is here and store it */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5794 if (data + (size = atoi(datasize)) <= msgend)
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5795 imgid = gaim_imgstore_add(data, size, src);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5796
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5797 /* if we have a stored image... */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5798 if (imgid) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5799 /* append the message up to the tag */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5800 newmsg = g_string_append_len(newmsg, tmp, start - tmp);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5801
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5802 /* write the new image tag */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5803 g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5804
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5805 /* and record the image number */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5806 images = g_slist_append(images, GINT_TO_POINTER(imgid));
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5807 } else {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5808 /* otherwise, copy up to the end of the tag */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5809 newmsg = g_string_append_len(newmsg, tmp, (end + 1) - tmp);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5810 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5811
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5812 /* clear the attribute list */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5813 g_datalist_clear(&attribs);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5814
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5815 /* continue from the end of the tag */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5816 tmp = end + 1;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5817 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5818
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5819 /* append any remaining message data (without the > :-) */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5820 if (last++ && (last < binary))
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5821 newmsg = g_string_append_len(newmsg, last, binary - last);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5822
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5823 /* set the flag if we caught any images */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5824 if (images)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5825 imflags |= GAIM_CONV_IM_IMAGES;
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5826 } else {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5827 g_string_append_len(newmsg, msg, len);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5828 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5829
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5830 /* XXX - I imagine Paco-Paco will want to do some voodoo with the encoding here */
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5831 serv_got_im(gc, sn, newmsg->str, imflags, time(NULL));
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5832
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5833 /* free up the message */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5834 g_string_free(newmsg, TRUE);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5835
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5836 /* unref any images we allocated */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5837 if (images) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5838 GSList *tmp;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5839 int id;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5840
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5841 for (tmp = images; tmp != NULL; tmp = tmp->next) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5842 id = GPOINTER_TO_INT(tmp->data);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5843 gaim_imgstore_unref(id);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5844 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5845
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5846 g_slist_free(images);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5847 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5848
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5849 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5850 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5851
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5852 static int gaim_odc_typing(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5853 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5854 char *sn;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5855 int typing;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5856 GaimConnection *gc = sess->aux_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5857
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
5858 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5859 sn = va_arg(ap, char *);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5860 typing = va_arg(ap, int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5861 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5862
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5863 if (typing == 0x0002) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5864 /* I had to leave this. It's just too funny. It reminds me of my sister. */
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5865 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5866 "ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5867 serv_got_typing(gc, sn, 0, GAIM_TYPING);
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5868 } else if (typing == 0x0001)
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5869 serv_got_typing(gc, sn, 0, GAIM_TYPED);
4870
773135edda4a [gaim-migrate @ 5200]
Mark Doliner <mark@kingant.net>
parents: 4853
diff changeset
5870 else
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
5871 serv_got_typing_stopped(gc, sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5872 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5873 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5874
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5875 static int gaim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *message, GaimConvImFlags imflags) {
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5876 char *buf;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5877 size_t len;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5878 int ret;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5879
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5880 if (imflags & GAIM_CONV_IM_IMAGES) {
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5881 GString *msg = g_string_new("");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5882 GString *data = g_string_new("<BINARY>");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5883 GData *attribs;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5884 const char *tmp, *start, *end, *last = NULL;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5885 int oscar_id = 0;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5886
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5887 tmp = message;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5888
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5889 /* for each valid IMG tag... */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5890 while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5891 GaimStoredImage *image = NULL;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5892 const char *id;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5893
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5894 last = end;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5895 id = g_datalist_get_data(&attribs, "id");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5896
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5897 /* ... if it refers to a valid gaim image ... */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5898 if (id && (image = gaim_imgstore_get(atoi(id)))) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5899 /* ... append the message from start to the tag ... */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5900 msg = g_string_append_len(msg, tmp, start - tmp);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5901 oscar_id++;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5902
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5903 /* ... insert a new img tag with the oscar id ... */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5904 if (image->filename)
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5905 g_string_append_printf(msg,
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5906 "<IMG SRC=\"file://%s\" ID=\"%d\" DATASIZE=\"%d\">",
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5907 image->filename, oscar_id, (int)image->size);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5908 else
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5909 g_string_append_printf(msg,
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5910 "<IMG ID=\"%d\" DATASIZE=\"%d\">",
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5911 oscar_id, (int)image->size);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5912
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5913 /* ... and append the data to the binary section ... */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5914 g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%d\">",
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5915 oscar_id, (int)image->size);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5916 data = g_string_append_len(data, image->data, image->size);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5917 data = g_string_append(data, "</DATA>");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5918 } else {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5919 /* ... otherwise, allow the possibly invalid img tag through. */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5920 /* should we do something else? */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5921 msg = g_string_append_len(msg, tmp, (end + 1) - tmp);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5922 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5923
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5924 g_datalist_clear(&attribs);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5925
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5926 /* continue from the end of the tag */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5927 tmp = end + 1;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5928 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5929
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5930 /* append any remaining message data (without the > :-) */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5931 if (last++ && *last)
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5932 msg = g_string_append(msg, last);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5933
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5934 /* if we inserted any images in the binary section, append it */
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5935 if (oscar_id) {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5936 msg = g_string_append_len(msg, data->str, data->len);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5937 msg = g_string_append(msg, "</BINARY>");
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5938 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5939
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5940 len = msg->len;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5941 buf = msg->str;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5942 g_string_free(msg, FALSE);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5943 g_string_free(data, TRUE);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5944 } else {
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5945 len = strlen(message);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5946 buf = g_memdup(message, len+1);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5947 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5948
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5949 /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5950 if (imflags & GAIM_CONV_IM_AUTO_RESP)
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5951 ret = aim_odc_send_im(sess, conn, buf, len, 0, 1);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5952 else
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5953 ret = aim_odc_send_im(sess, conn, buf, len, 0, 0);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5954
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5955 g_free(buf);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5956
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5957 return ret;
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5958 }
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
5959
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5960 struct ask_do_dir_im {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5961 char *who;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5962 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5963 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5964
3730
a20bf3d247ff [gaim-migrate @ 3868]
Sean Egan <seanegan@gmail.com>
parents: 3725
diff changeset
5965 static void oscar_cancel_direct_im(struct ask_do_dir_im *data) {
5136
381da05cb5ed [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5966 g_free(data->who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5967 g_free(data);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5968 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5969
3730
a20bf3d247ff [gaim-migrate @ 3868]
Sean Egan <seanegan@gmail.com>
parents: 3725
diff changeset
5970 static void oscar_direct_im(struct ask_do_dir_im *data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5971 GaimConnection *gc = data->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5972 OscarData *od;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5973 struct direct_im *dim;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5974
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
5975 if (!g_list_find(gaim_connections_get_all(), gc)) {
5136
381da05cb5ed [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5976 g_free(data->who);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
5977 g_free(data);
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
5978 return;
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
5979 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
5980
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5981 od = (OscarData *)gc->proto_data;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
5982
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5983 dim = find_direct_im(od, data->who);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5984 if (dim) {
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5985 if (!(dim->connected)) { /* We'll free the old, unconnected dim, and start over */
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5986 od->direct_ims = g_slist_remove(od->direct_ims, dim);
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5987 gaim_input_remove(dim->watcher);
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5988 g_free(dim);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5989 gaim_debug(GAIM_DEBUG_INFO, "oscar",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5990 "Gave up on old direct IM, trying again\n");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5991 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5992 gaim_notify_error(gc, NULL, "DirectIM already open.", NULL);
5136
381da05cb5ed [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5993 g_free(data->who);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
5994 g_free(data);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5995 return;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
5996 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5997 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5998 dim = g_new0(struct direct_im, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5999 dim->gc = gc;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6000 g_snprintf(dim->name, sizeof dim->name, "%s", data->who);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6001
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6002 dim->conn = aim_odc_initiate(od->sess, data->who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6003 if (dim->conn != NULL) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6004 od->direct_ims = g_slist_append(od->direct_ims, dim);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
6005 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6006 oscar_callback, dim->conn);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6007 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED,
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6008 gaim_odc_initiate, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6009 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6010 gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6011 g_free(dim);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6012 }
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
6013
5136
381da05cb5ed [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
6014 g_free(data->who);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
6015 g_free(data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6016 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6017
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6018 static void oscar_ask_direct_im(GaimConnection *gc, const char *who) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
6019 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6020 struct ask_do_dir_im *data = g_new0(struct ask_do_dir_im, 1);
5136
381da05cb5ed [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
6021 data->who = g_strdup(who);
2170
c24595d3c364 [gaim-migrate @ 2180]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
6022 data->gc = gc;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
6023 buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."), who);
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6024
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6025 gaim_request_action(gc, NULL, buf,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6026 _("Because this reveals your IP address, it "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6027 "may be considered a privacy risk. Do you "
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6028 "wish to continue?"),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6029 0, data, 2,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6030 _("Connect"), G_CALLBACK(oscar_direct_im),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6031 _("Cancel"), G_CALLBACK(oscar_cancel_direct_im));
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
6032 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6033 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6034
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6035 static void oscar_set_permit_deny(GaimConnection *gc) {
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6036 GaimAccount *account = gaim_connection_get_account(gc);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6037 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6038 #ifdef NOSSI
4770
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6039 GSList *list, *g = gaim_blist_groups(), *g1;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6040 char buf[MAXMSGLEN];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6041 int at;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6042
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6043 switch(account->perm_deny) {
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
6044 case 1:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6045 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gaim_account_get_username(account));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6046 break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6047 case 2:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6048 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gaim_account_get_username(account));
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6049 break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6050 case 3:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6051 list = account->permit;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6052 at = 0;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6053 while (list) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6054 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6055 list = list->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6056 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6057 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6058 break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6059 case 4:
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6060 list = account->deny;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6061 at = 0;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6062 while (list) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6063 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6064 list = list->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6065 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6066 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6067 break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6068 case 5:
4770
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6069 g1 = g;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6070 at = 0;
4770
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6071 while (g1) {
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6072 list = gaim_blist_members((struct group *)g->data);
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6073 GSList list1 = list;
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6074 while (list1) {
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6075 struct buddy *b = list1->data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6076 if(b->account == account)
4349
0c68d402f59f [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
6077 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", b->name);
4770
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6078 list1 = list1->next;
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
6079 }
4770
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6080 g_slist_free(list);
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6081 g1 = g1->next;
4349
0c68d402f59f [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
6082 }
4770
c4c28874ecd3 [gaim-migrate @ 5088]
Sean Egan <seanegan@gmail.com>
parents: 4766
diff changeset
6083 g_slist_free(g);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6084 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6085 break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6086 default:
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6087 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6088 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6089 signoff_blocked(gc);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6090 #else
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6091 if (od->sess->ssi.received_data)
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6092 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6093 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6094 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6095
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6096 static void oscar_add_permit(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6097 #ifdef NOSSI
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
6098 if (gc->account->permdeny == 3)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6099 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6100 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6101 OscarData *od = (OscarData *)gc->proto_data;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6102 gaim_debug(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
6103 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6104 aim_ssi_addpermit(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6105 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6106 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6107
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6108 static void oscar_add_deny(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6109 #ifdef NOSSI
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
6110 if (gc->account->permdeny == 4)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6111 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6112 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6113 OscarData *od = (OscarData *)gc->proto_data;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6114 gaim_debug(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
6115 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6116 aim_ssi_adddeny(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6117 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6118 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6119
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6120 static void oscar_rem_permit(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6121 #ifdef NOSSI
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
6122 if (gc->account->permdeny == 3)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6123 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6124 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6125 OscarData *od = (OscarData *)gc->proto_data;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6126 gaim_debug(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
6127 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6128 aim_ssi_delpermit(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6129 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6130 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6131
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6132 static void oscar_rem_deny(GaimConnection *gc, const char *who) {
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6133 #ifdef NOSSI
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
6134 if (gc->account->permdeny == 4)
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6135 oscar_set_permit_deny(gc);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
6136 #else
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6137 OscarData *od = (OscarData *)gc->proto_data;
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6138 gaim_debug(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
6139 if (od->sess->ssi.received_data)
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
6140 aim_ssi_deldeny(od->sess, who);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
6141 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6142 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6143
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6144 static GList *oscar_away_states(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6145 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6146 OscarData *od = gc->proto_data;
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
6147 GList *m = NULL;
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
6148
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
6149 if (!od->icq)
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
6150 return g_list_append(m, GAIM_AWAY_CUSTOM);
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
6151
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6152 m = g_list_append(m, _("Online"));
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6153 m = g_list_append(m, _("Away"));
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6154 m = g_list_append(m, _("Do Not Disturb"));
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6155 m = g_list_append(m, _("Not Available"));
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6156 m = g_list_append(m, _("Occupied"));
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6157 m = g_list_append(m, _("Free For Chat"));
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6158 m = g_list_append(m, _("Invisible"));
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6159
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6160 return m;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6161 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6162
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6163 static void oscar_ssi_editcomment(struct name_data *data, const char *text) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6164 OscarData *od = data->gc->proto_data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6165 GaimBuddy *b;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6166 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6167
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6168 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
6169 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6170 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6171 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6173 if (!(g = gaim_find_buddys_group(b))) {
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6174 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6175 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6176 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6177
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6178 aim_ssi_editcomment(od->sess, g->name, data->name, text);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6179 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6180 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6181
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6182 static void oscar_buddycb_edit_comment(GaimConnection *gc, const char *name) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6183 OscarData *od = gc->proto_data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6184 struct name_data *data = g_new(struct name_data, 1);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6185 GaimBuddy *b;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6186 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6187 char *comment;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6188 gchar *comment_utf8;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6189
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6190 if (!(b = gaim_find_buddy(gaim_connection_get_account(gc), name)))
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6191 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6192 if (!(g = gaim_find_buddys_group(b)))
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6193 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6194 comment = aim_ssi_getcomment(od->sess->ssi.local, g->name, name);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6195 comment_utf8 = comment ? gaim_utf8_try_convert(comment) : NULL;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6196
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6197 data->gc = gc;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6198 data->name = g_strdup(name);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6199 data->nick = NULL;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6200
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6201 gaim_request_input(gc, NULL, _("Buddy Comment:"), NULL,
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6202 comment_utf8, TRUE, FALSE,
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6203 _("OK"), G_CALLBACK(oscar_ssi_editcomment),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6204 _("Cancel"), G_CALLBACK(oscar_free_name_data),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6205 data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6206
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6207 free(comment);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6208 g_free(comment_utf8);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6209 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6210
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6211 static GList *oscar_buddy_menu(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6212 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6213 GList *m = NULL;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6214 struct proto_buddy_menu *pbm;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6215
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6216 pbm = g_new0(struct proto_buddy_menu, 1);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6217 pbm->label = _("Edit Buddy Comment");
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6218 pbm->callback = oscar_buddycb_edit_comment;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6219 pbm->gc = gc;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6220 m = g_list_append(m, pbm);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
6221
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6222 if (od->icq) {
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6223 #if 0
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6224 pbm = g_new0(struct proto_buddy_menu, 1);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6225 pbm->label = _("Get Status Msg");
4969
21cfdb9af2eb [gaim-migrate @ 5303]
Mark Doliner <mark@kingant.net>
parents: 4965
diff changeset
6226 pbm->callback = oscar_get_icqstatusmsg;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6227 pbm->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6228 m = g_list_append(m, pbm);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
6229 #endif
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6230 } else {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6231 GaimBuddy *b = gaim_find_buddy(gc->account, who);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6232 aim_userinfo_t *userinfo;
5975
80e5258226f3 [gaim-migrate @ 6422]
Mark Doliner <mark@kingant.net>
parents: 5968
diff changeset
6233
80e5258226f3 [gaim-migrate @ 6422]
Mark Doliner <mark@kingant.net>
parents: 5968
diff changeset
6234 if (b)
7045
237ad253dd34 [gaim-migrate @ 7608]
Mark Doliner <mark@kingant.net>
parents: 7038
diff changeset
6235 userinfo = aim_locate_finduserinfo(od->sess, b->name);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6236
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6237 if (b && userinfo && aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), who) && GAIM_BUDDY_IS_ONLINE(b)) {
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6238 if (userinfo->capabilities & AIM_CAPS_DIRECTIM) {
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6239 pbm = g_new0(struct proto_buddy_menu, 1);
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6240 pbm->label = _("Direct IM");
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6241 pbm->callback = oscar_ask_direct_im;
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6242 pbm->gc = gc;
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6243 m = g_list_append(m, pbm);
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6244 }
7650
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6245
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6246 if (userinfo->capabilities & AIM_CAPS_SENDFILE) {
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6247 pbm = g_new0(struct proto_buddy_menu, 1);
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6248 pbm->label = _("Send File");
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6249 pbm->callback = oscar_ask_sendfile;
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6250 pbm->gc = gc;
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6251 m = g_list_append(m, pbm);
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6252 }
4826
e6654fab588b [gaim-migrate @ 5151]
Mark Doliner <mark@kingant.net>
parents: 4825
diff changeset
6253 #if 0
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
6254 if (userinfo->capabilities & AIM_CAPS_GETFILE) {
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6255 pbm = g_new0(struct proto_buddy_menu, 1);
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6256 pbm->label = _("Get File");
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6257 pbm->callback = oscar_ask_getfile;
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6258 pbm->gc = gc;
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6259 m = g_list_append(m, pbm);
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6260 }
4826
e6654fab588b [gaim-migrate @ 5151]
Mark Doliner <mark@kingant.net>
parents: 4825
diff changeset
6261 #endif
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6262 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6263 }
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
6264
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6265 if (od->sess->ssi.received_data) {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6266 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, who);
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6267 if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, who)) {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6268 pbm = g_new0(struct proto_buddy_menu, 1);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6269 pbm->label = _("Re-request Authorization");
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6270 pbm->callback = gaim_auth_sendrequest;
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6271 pbm->gc = gc;
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
6272 m = g_list_append(m, pbm);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6273 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
6274 }
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
6275
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6276 return m;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6277 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6278
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6279 static void oscar_format_screenname(GaimConnection *gc, const char *nick) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6280 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6281 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
6282 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6283 od->setnick = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6284 od->newsn = g_strdup(nick);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6285 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6286 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6287 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
6288 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6289 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6290 gaim_notify_error(gc, NULL, _("The new formatting is invalid."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6291 _("Screenname formatting can change only capitalization and whitespace."));
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6292 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6293 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6294
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6295 static void oscar_show_format_screenname(GaimConnection *gc)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6296 {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6297 gaim_request_input(gc, NULL, _("New screenname formatting:"), NULL,
6035
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
6298 gaim_connection_get_display_name(gc), FALSE, FALSE,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6299 _("OK"), G_CALLBACK(oscar_format_screenname),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6300 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6301 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6302 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6303
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6304 static void oscar_confirm_account(GaimConnection *gc)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6305 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6306 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6307 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
6308
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6309 if (conn) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6310 aim_admin_reqconfirm(od->sess, conn);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6311 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6312 od->conf = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6313 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6314 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6315 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6316
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6317 static void oscar_show_email(GaimConnection *gc)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6318 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6319 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6320 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
6321
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6322 if (conn) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6323 aim_admin_getinfo(od->sess, conn, 0x11);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6324 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6325 od->reqemail = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6326 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6327 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6328 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6329
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6330 static void oscar_change_email(GaimConnection *gc, const char *email)
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6331 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6332 OscarData *od = gc->proto_data;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6333 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
6334
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6335 if (conn) {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6336 aim_admin_setemail(od->sess, conn, email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6337 } else {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6338 od->setemail = TRUE;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6339 od->email = g_strdup(email);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6340 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6341 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6342 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
6343
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6344 static void oscar_show_change_email(GaimConnection *gc)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6345 {
6035
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
6346 gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL,
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
6347 FALSE, FALSE,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6348 _("OK"), G_CALLBACK(oscar_change_email),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6349 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6350 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6351 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6352
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6353 static void oscar_show_awaitingauth(GaimConnection *gc)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6354 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6355 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6356 gchar *nombre, *text, *tmp;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6357 GaimBlistNode *gnode, *cnode, *bnode;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6358 int num=0;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6359
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6360 text = g_strdup("");
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6361
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6362 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6363 GaimGroup *group = (GaimGroup *)gnode;
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6364 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6365 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6366 for (cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6367 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6368 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6369 for (bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6370 GaimBuddy *buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6371 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6372 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6373 if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6374 if (gaim_get_buddy_alias_only(buddy))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6375 nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_get_buddy_alias_only(buddy));
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6376 else
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6377 nombre = g_strdup_printf(" %s", buddy->name);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6378 tmp = g_strdup_printf("%s%s<br>", text, nombre);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6379 g_free(text);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6380 text = tmp;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6381 g_free(nombre);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6382 num++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6383 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6384 }
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6385 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6386 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6387
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6388 if (!num) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6389 g_free(text);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6390 text = g_strdup(_("<i>you are not waiting for authorization</i>"));
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6391 }
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6392
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6393 gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6394 "the following buddies"), _("You can re-request "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6395 "authorization from these buddies by "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6396 "right-clicking on them and selecting "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6397 "\"Re-request Authorization.\""), text, NULL, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6398 g_free(text);
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6399 }
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6400
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6401 static void search_by_email_cb(GaimConnection *gc, const char *email)
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6402 {
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6403 serv_dir_search(gc, "", "", "", "", "", "", "", email);
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6404 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6405
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6406 static void oscar_show_find_email(GaimConnection *gc)
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6407 {
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6408 gaim_request_input(gc, _("Find Buddy by E-mail"),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6409 _("Search for a buddy by e-mail address"),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6410 _("Type the e-mail address of the buddy you are "
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6411 "searching for."),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6412 NULL, FALSE, FALSE,
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6413 _("Search"), G_CALLBACK(search_by_email_cb),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6414 _("Cancel"), NULL, gc);
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6415 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6416
7366
566eba9a2b2c [gaim-migrate @ 7961]
Mark Doliner <mark@kingant.net>
parents: 7334
diff changeset
6417 #if 0
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6418 static void oscar_setavailmsg(GaimConnection *gc, char *text) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6419 OscarData *od = (OscarData *)gc->proto_data;
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6420
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
6421 aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0);
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6422 aim_srv_setavailmsg(od->sess, text);
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6423 }
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6424
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6425 static void oscar_show_setavailmsg(GaimConnection *gc)
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6426 {
7313
be7c1468c6a7 [gaim-migrate @ 7897]
Mark Doliner <mark@kingant.net>
parents: 7301
diff changeset
6427 gaim_request_input(gc, NULL, _("Available Message:"), NULL,
be7c1468c6a7 [gaim-migrate @ 7897]
Mark Doliner <mark@kingant.net>
parents: 7301
diff changeset
6428 _("I'm doing work and hoping for a distraction--IM me!"),
be7c1468c6a7 [gaim-migrate @ 7897]
Mark Doliner <mark@kingant.net>
parents: 7301
diff changeset
6429 TRUE, FALSE,
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6430 _("OK"), G_CALLBACK(oscar_setavailmsg),
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6431 _("Cancel"), NULL,
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6432 gc);
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6433 }
7366
566eba9a2b2c [gaim-migrate @ 7961]
Mark Doliner <mark@kingant.net>
parents: 7334
diff changeset
6434 #endif
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6435
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6436 static void oscar_show_set_info(GaimConnection *gc)
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6437 {
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6438 gaim_account_request_change_user_info(gaim_connection_get_account(gc));
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6439 }
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6440
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6441 static void oscar_change_pass(GaimConnection *gc)
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6442 {
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6443 gaim_account_request_change_password(gaim_connection_get_account(gc));
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6444 }
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6445
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6446 static void oscar_show_chpassurl(GaimConnection *gc)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6447 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6448 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6449 gchar *substituted = gaim_strreplace(od->sess->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc)));
6465
fb64cc87bc96 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6400
diff changeset
6450 gaim_notify_uri(gc, substituted);
5517
e9b9fbf89c42 [gaim-migrate @ 5916]
Mark Doliner <mark@kingant.net>
parents: 5498
diff changeset
6451 g_free(substituted);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6452 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6453
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6454 static void oscar_show_imforwardingurl(GaimConnection *gc)
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6455 {
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6456 gaim_notify_uri(gc, "http://mymobile.aol.com/dbreg/register?action=imf&clientID=1");
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6457 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6458
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6459 static void oscar_set_icon(GaimConnection *gc, const char *iconfile)
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6460 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6461 OscarData *od = gc->proto_data;
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
6462 aim_session_t *sess = od->sess;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6463 FILE *file;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6464 struct stat st;
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
6465
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6466 if (iconfile == NULL) {
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6467 /* Set an empty icon, or something */
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6468 } else if (!stat(iconfile, &st)) {
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6469 char *buf = g_malloc(st.st_size);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6470 file = fopen(iconfile, "rb");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6471 if (file) {
6052
c062c4bf58ac [gaim-migrate @ 6502]
Mark Doliner <mark@kingant.net>
parents: 6051
diff changeset
6472 md5_state_t *state;
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6473 char md5[16];
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6474 int len = fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6475 fclose(file);
6052
c062c4bf58ac [gaim-migrate @ 6502]
Mark Doliner <mark@kingant.net>
parents: 6051
diff changeset
6476 state = g_malloc(sizeof(md5_state_t));
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6477 md5_init(state);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6478 md5_append(state, buf, len);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6479 md5_finish(state, md5);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6480 g_free(state);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6481 aim_ssi_seticon(sess, md5, 16);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6482 } else
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6483 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6484 "Can't open buddy icon file!\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6485 g_free(buf);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6486 } else
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6487 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6488 "Can't stat buddy icon file!\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6489 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6490
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6491
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6492 static GList *oscar_actions(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6493 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6494 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6495 struct proto_actions_menu *pam;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6496 GList *m = NULL;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6497
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6498 pam = g_new0(struct proto_actions_menu, 1);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6499 pam->label = _("Set User Info");
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6500 pam->callback = oscar_show_set_info;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6501 pam->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6502 m = g_list_append(m, pam);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6503
7366
566eba9a2b2c [gaim-migrate @ 7961]
Mark Doliner <mark@kingant.net>
parents: 7334
diff changeset
6504 #if 0
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6505 pam = g_new0(struct proto_actions_menu, 1);
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6506 pam->label = _("Set Available Message");
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6507 pam->callback = oscar_show_setavailmsg;
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6508 pam->gc = gc;
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6509 m = g_list_append(m, pam);
7366
566eba9a2b2c [gaim-migrate @ 7961]
Mark Doliner <mark@kingant.net>
parents: 7334
diff changeset
6510 #endif
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6511
5238
c6973001473d [gaim-migrate @ 5608]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
6512 pam = g_new0(struct proto_actions_menu, 1);
c6973001473d [gaim-migrate @ 5608]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
6513 pam->label = _("Change Password");
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6514 pam->callback = oscar_change_pass;
5238
c6973001473d [gaim-migrate @ 5608]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
6515 pam->gc = gc;
c6973001473d [gaim-migrate @ 5608]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
6516 m = g_list_append(m, pam);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6517
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6518 if (od->sess->authinfo->chpassurl) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6519 pam = g_new0(struct proto_actions_menu, 1);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6520 pam->label = _("Change Password (URL)");
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6521 pam->callback = oscar_show_chpassurl;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6522 pam->gc = gc;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6523 m = g_list_append(m, pam);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6524 }
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6525
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6526 if (od->sess->authinfo->chpassurl) {
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6527 pam = g_new0(struct proto_actions_menu, 1);
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6528 pam->label = _("Configure IM Forwarding (URL)");
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6529 pam->callback = oscar_show_imforwardingurl;
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6530 pam->gc = gc;
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6531 m = g_list_append(m, pam);
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6532 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6533
5238
c6973001473d [gaim-migrate @ 5608]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
6534 if (!od->icq) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6535 /* AIM actions */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6536 m = g_list_append(m, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6537
5917
a747e9e0e2cf [gaim-migrate @ 6349]
Mark Doliner <mark@kingant.net>
parents: 5904
diff changeset
6538 pam = g_new0(struct proto_actions_menu, 1);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6539 pam->label = _("Format Screenname");
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
6540 pam->callback = oscar_show_format_screenname;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6541 pam->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6542 m = g_list_append(m, pam);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6543
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6544 pam = g_new0(struct proto_actions_menu, 1);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6545 pam->label = _("Confirm Account");
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6546 pam->callback = oscar_confirm_account;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6547 pam->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6548 m = g_list_append(m, pam);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6549
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6550 pam = g_new0(struct proto_actions_menu, 1);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6551 pam->label = _("Display Current Registered Address");
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6552 pam->callback = oscar_show_email;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6553 pam->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6554 m = g_list_append(m, pam);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6555
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6556 pam = g_new0(struct proto_actions_menu, 1);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6557 pam->label = _("Change Current Registered Address");
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6558 pam->callback = oscar_show_change_email;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6559 pam->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6560 m = g_list_append(m, pam);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6561 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6562
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6563 m = g_list_append(m, NULL);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6564
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6565 pam = g_new0(struct proto_actions_menu, 1);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6566 pam->label = _("Show Buddies Awaiting Authorization");
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6567 pam->callback = oscar_show_awaitingauth;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6568 pam->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6569 m = g_list_append(m, pam);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6570
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6571 m = g_list_append(m, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6572
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6573 pam = g_new0(struct proto_actions_menu, 1);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6574 pam->label = _("Search for Buddy by Email");
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6575 pam->callback = oscar_show_find_email;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6576 pam->gc = gc;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6577 m = g_list_append(m, pam);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6578
4336
446293c92da3 [gaim-migrate @ 4600]
Mark Doliner <mark@kingant.net>
parents: 4333
diff changeset
6579 /* pam = g_new0(struct proto_actions_menu, 1);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6580 pam->label = _("Search for Buddy by Information");
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6581 pam->callback = show_find_info;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6582 pam->gc = gc;
4336
446293c92da3 [gaim-migrate @ 4600]
Mark Doliner <mark@kingant.net>
parents: 4333
diff changeset
6583 m = g_list_append(m, pam); */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6584
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6585 return m;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6586 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6587
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6588 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
6589 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6590 OscarData *od = gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6591
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6592 if (od->icq) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6593 aim_icq_changepasswd(od->sess, new);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6594 } else {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6595 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
6596 if (conn) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6597 aim_admin_changepasswd(od->sess, conn, new, old);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6598 } else {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6599 od->chpass = TRUE;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6600 od->oldp = g_strdup(old);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6601 od->newp = g_strdup(new);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6602 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6603 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6604 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6605 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6606
6059
d8cd876e613e [gaim-migrate @ 6509]
Mark Doliner <mark@kingant.net>
parents: 6053
diff changeset
6607 static void oscar_convo_closed(GaimConnection *gc, const char *who)
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6608 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6609 OscarData *od = gc->proto_data;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6610 struct direct_im *dim = find_direct_im(od, who);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6611
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6612 if (!dim)
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6613 return;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6614
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6615 od->direct_ims = g_slist_remove(od->direct_ims, dim);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6616 gaim_input_remove(dim->watcher);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6617 aim_conn_kill(od->sess, &dim->conn);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6618 g_free(dim);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6619 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6620
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6621 static GaimPluginProtocolInfo prpl_info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6622 {
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6623 GAIM_PROTO_OSCAR,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6624 OPT_PROTO_MAIL_CHECK | OPT_PROTO_BUDDY_ICON | OPT_PROTO_IM_IMAGE,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6625 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6626 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6627 oscar_list_icon,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6628 oscar_list_emblems,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6629 oscar_status_text,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6630 oscar_tooltip_text,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6631 oscar_away_states,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6632 oscar_actions,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6633 oscar_buddy_menu,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6634 oscar_chat_info,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6635 oscar_login,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6636 oscar_close,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6637 oscar_send_im,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6638 oscar_set_info,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6639 oscar_send_typing,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6640 oscar_get_info,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6641 oscar_set_away,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6642 oscar_get_away,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6643 oscar_set_dir,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6644 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6645 oscar_dir_search,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6646 oscar_set_idle,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6647 oscar_change_passwd,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6648 oscar_add_buddy,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6649 oscar_add_buddies,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6650 oscar_remove_buddy,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6651 oscar_remove_buddies,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6652 oscar_add_permit,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6653 oscar_add_deny,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6654 oscar_rem_permit,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6655 oscar_rem_deny,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6656 oscar_set_permit_deny,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6657 oscar_warn,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6658 oscar_join_chat,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6659 oscar_chat_invite,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6660 oscar_chat_leave,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6661 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6662 oscar_chat_send,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6663 oscar_keepalive,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6664 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6665 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6666 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6667 #ifndef NOSSI
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6668 oscar_alias_buddy,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6669 oscar_move_buddy,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6670 oscar_rename_group,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6671 #else
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6672 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6673 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6674 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6675 #endif
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6676 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6677 oscar_convo_closed,
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6678 NULL,
7650
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7647
diff changeset
6679 oscar_set_icon
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6680 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6681
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6682 static GaimPluginInfo info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6683 {
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6684 2, /**< api_version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6685 GAIM_PLUGIN_PROTOCOL, /**< type */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6686 NULL, /**< ui_requirement */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6687 0, /**< flags */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6688 NULL, /**< dependencies */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6689 GAIM_PRIORITY_DEFAULT, /**< priority */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6690
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6691 "prpl-oscar", /**< id */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6692 "AIM/ICQ", /**< name */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6693 VERSION, /**< version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6694 /** summary */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6695 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6696 /** description */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6697 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6698 NULL, /**< author */
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
6699 GAIM_WEBSITE, /**< homepage */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6700
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6701 NULL, /**< load */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6702 NULL, /**< unload */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6703 NULL, /**< destroy */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6704
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6705 NULL, /**< ui_info */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6706 &prpl_info /**< extra_info */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6707 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6708
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6709 static void
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
6710 init_plugin(GaimPlugin *plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6711 {
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6712 GaimAccountOption *option;
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6713
5685
43ea75092684 [gaim-migrate @ 6106]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
6714 option = gaim_account_option_string_new(_("Auth host"), "server",
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6715 "login.oscar.aol.com");
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6716 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6717 option);
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6718
5685
43ea75092684 [gaim-migrate @ 6106]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
6719 option = gaim_account_option_int_new(_("Auth port"), "port", 5190);
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6720 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6721 option);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6722
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6723 my_protocol = plugin;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6724 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6725
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
6726 GAIM_INIT_PLUGIN(oscar, init_plugin, info);